해당 폴더가 Python Package 폴더인 것을 나타내기 위해서는 폴더 아래에 __init__.py
파일이 필요하다.
python3.3 버전 이상에선는 __init__.py
파일 없이 작성하여도 Package를 작성할 수 있는데, 이는 Namespace Package라 부른다. __init__.py
가 있는 Package는 Regular Package라 부른다.
말그대로 namespace를 공유해야하는 패키지는 Namespace Package를 이용하고, namespace를 중복허용을 원치 않을 때 Regular Package를 사용한다.
__init__.py
에는 __all__
이라는 변수를 입력할 수 있는데, 이는
from package import *
와 같이 *
를 이용하여 package에 있는 모든 module를 불러올때 import 되는 모듈을 설정할 수 있다.
└── package1
├── __init__.py
├── module1.py
├── module2.py
├── module3.py
├── module4.py
└── module5.py
# __init__.py
__all__ = ['module1', 'module2', 'module3']
위와 같이 __init__.py
를 세팅한다면, module4
를 활용하려 할 때 다음과 같은 에러가 발생한다.
from package import *
>>> module4.function()
NameError: name 'module4' is not defined