Python 인터프리터가 __path__를 처리하는 법
파이썬의 특수 내장 변수
__name__, __file__ 중에 __path__라는 변수가 있다.
__name__의 경우
직접 파이썬 인터프리터가 단일 파일을 실행할 때
'__main__' 값을 가진다.
다른 파일에서 import를 통해 모듈을 불러오는 경우
__name__은 원래 파일명을 가진다.
파이썬 인터프리터는
패키지가 포함된 폴더를 import를 통해 호출할 때,
1. __path__ 변수를 만들어 __init__.py에 삽입한다.
2. 패키지의 위치를 __path__ 변수에 리스트 형태로 저장한다.
부분적으로 패키지의 하위 모듈을 호출하고 싶을 때
__name__, __file__ 중에 __path__라는 변수가 있다.
__name__의 경우
직접 파이썬 인터프리터가 단일 파일을 실행할 때
'__main__' 값을 가진다.
다른 파일에서 import를 통해 모듈을 불러오는 경우
__name__은 원래 파일명을 가진다.
__path__는 단일 파일 모듈(.py)에는 존재하지 않고
하위에 __init__.py가 명시된 패키지에만 존재하는 속성이다.
때문에, 단일 파일 모듈에서 __path__에 접근하면
다음과 같은 에러가 raise된다.
NameError: name '__path__' is not defined. Did you mean: '__name__'?
하위에 __init__.py가 명시된 패키지에만 존재하는 속성이다.
때문에, 단일 파일 모듈에서 __path__에 접근하면
다음과 같은 에러가 raise된다.
NameError: name '__path__' is not defined. Did you mean: '__name__'?
파이썬 인터프리터는
패키지가 포함된 폴더를 import를 통해 호출할 때,
1. __path__ 변수를 만들어 __init__.py에 삽입한다.
2. 패키지의 위치를 __path__ 변수에 리스트 형태로 저장한다.
부분적으로 패키지의 하위 모듈을 호출하고 싶을 때
pkgutils.walk_packages(__path__)를 사용하면
모듈들을 탐색할 수 있다.
모듈들을 탐색할 수 있다.
댓글
댓글 쓰기