Python 인터프리터가 __path__를 처리하는 법

파이썬의 특수 내장 변수
__name__, __file__  중에 __path__라는 변수가 있다.


__name__의 경우
직접 파이썬 인터프리터가 단일 파일을 실행할 때
'__main__' 값을 가진다.

다른 파일에서 import를 통해 모듈을 불러오는 경우
__name__은 원래 파일명을 가진다.





__path__는 단일 파일 모듈(.py)에는 존재하지 않고
하위에 __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__)를 사용하면
모듈들을 탐색할 수 있다.

 

댓글

이 블로그의 인기 게시물

Blogger 커스터마이징 : CSS 수정 (sticky-header)

Vue 첫 걸음

Python의 빌트인 class들의 관계