[Python] Package & __init__.py의 역할

이동명·2021년 6월 11일
0

해당 폴더가 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

0개의 댓글