__init__.py

2017. 7. 24. 16:01IT관련

반응형

 

깃허브 같은 곳에서 Python 모듈을 보면 "__init__.py"라는 파일을 보게 된다.

"__init__.py"은 package initialization file(패키지 초기화 파일)이라고 부르며 이 파일이 있다는 것은 Python system에 해당 디렉토리가 패키지라는 것을 의미한다.

반대로 생각하면 "__init__.py"가 없다면 Python은 해당 디렉터리의 모듈을 가져오지 못한다.

 

module 디렉토리에 "__init__.py"가 없는 경우

Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import module.stats
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named module.stats

 

하지만 Python 3.3부터는 "__init__.py"가 없어도 패키지로 인식한다. 하지만 Python의 하위 호환을 위해서라도 유지하는 것이 필요하다.

 

Package initialization file의 의미

대부분의 "__init__.py"는 내용이 없다. 

하지만 모듈이 처음 로드 될 때 패키지 수준의 변수 정의도 가능하다.

이 파일에 정의된 변수는 패키지내 모든 모듈이 공통으로 사용할 수 있다.

 

 

 

 

 

반응형