본문 바로가기
개발/Python

[파이썬, Python] 패키지 __init__.py 활용법 총정리

by 꾀돌이 개발자 2024. 7. 12.
반응형

 

패키지 __init__.py 활용하기

 

 

- 아래 링크를 통해 패키지 활용법을 확인해주세요.

https://easyjwork.tistory.com/34

 

[파이썬, Python] 패키지 활용법 총정리

패키지 활용하기  - 파이썬 패키지는 파이썬 코드의 모듈들을 조직화하고 배포하기 위해 사용되는 구조입니다.- 패키지는 여러 모듈을 포함할 수 있으며, 대규모 프로젝트를 구성하거나 코드

easyjwork.tistory.com

- __init__.py 파일은 파이썬 패키지의 초기화와 관련된 특별한 역할을 합니다.

- 패키지 디렉터리에 __init__.py 파일이 포함되어 있으면 해당 디렉터리가 패키지임을 파이썬에게 알려줍니다.

 

 

[다양한 용도]

 

 

1. 패키지 초기화 코드: __init__.py 파일에 초기화 코드를 작성할 수 있습니다.

  • 이 코드는 패키지가 임포트될 때 실행됩니다.
# mypackage/__init__.py
print("mypackage is imported")

# 사용 예시
import mypackage
# 출력: mypackage is imported

 

 

2. 패키지 구성 요소 노출: __init__.py 파일을 사용하여 패키지에서 특정 모듈이나 함수, 클래스를 노출시킬 수 있습니다.

  • 이를 통해 패키지 사용자가 더 간편하게 접근할 수 있도록 할 수 있습니다.
# mypackage/__init__.py
from .module1 import some_function
from .module2 import AnotherClass

__all__ = ["some_function", "AnotherClass"]

# 사용 예시
from mypackage import some_function, AnotherClass

 

 

3. 서브 패키지와 모듈 임포트: 패키지 내에서 서브 패키지와 모듈을 임포트하여 패키지 계층 구조를 설정할 수 있습니다.

# mypackage/__init__.py
from . import subpackage

# mypackage/subpackage/__init__.py
from .module3 import function_in_subpackage

# 사용 예시
from mypackage.subpackage import function_in_subpackage

 

 

4. 패키지 버전 정보 포함: 패키지의 버전 정보를 __init__.py 파일에 포함시켜 관리할 수 있습니다.

# mypackage/__init__.py
__version__ = "1.0.0"

# 사용 예시
import mypackage
print(mypackage.__version__)
# 출력: 1.0.0

 

 

5. 네임스페이스 패키지 지원: PEP 420에 따라 __init__.py 파일이 없어도 패키지를 네임스페이스 패키지로 사용할 수 있습니다.

  • 그러나 하위 호환성과 명시성을 위해 여전히 __init__.py 파일을 포함시키는 것이 일반적입니다.

 

 

6. 예제

  • 다음은 mypackage의 __init__.py 파일을 활용하여 여러 모듈을 노출시키는 예제입니다.
# mypackage/__init__.py
from .module1 import function1
from .module2 import function2, MyClass

__all__ = ["function1", "function2", "MyClass"]
  • 이렇게 설정하면 패키지 사용자는 개별 모듈을 임포트하지 않고도 패키지의 주요 기능에 접근할 수 있습니다.
from mypackage import function1, function2, MyClass

function1()
function2()
obj = MyClass()

 

반응형