Python/Fundamentals
Python에서 __init__.py 의 역할
펩시_콜라
2024. 2. 24. 19:00
Python에서 packages를 만들게 되면, __init__.py를 포함하게 된다.
다들 그렇게 코드를 작성하길래, 왜 필요한지 모른 채 그냥 __init__.py를 추가했었다.
그러다가, __init__.py를 추가하지 않고, 해당 packages를 import해서 불러오려고 하다보니,
modules를 찾을 수 없다는 에러가 떴고, 그 원인이 바로 __init__.py였다
__init__.py의 역할은?
__init__.py 파일은 python 패키지를 정의하는 데에 사용되는 파일이다. 주요 역할은 아래와 같은데,
1. 패키지 식별자로 사용
- __init__.py 파일이 있는 디렉토리는 Python에게 패키지로 취급되어야 함을 알린다. 즉, 이 파일이 없다면 해당 디렉토리는 단순한 모듈 디렉토리로 간주가 된다.
2. 초기화 코드 포함
- __init__.py를 빈 파일로 둘 수도 있지만, 패키지가 로드될 때 실행되는 초기화 코드를 포함할 수 있다. 이를 통해 패키지 수준의 변수, 함수, 클래스 등을 정의하는 것이 가능해진다.
3. 상대 경로 임포트 지원 (에러가 났던 그 이유)
- 패키지 내에서 모듈을 상대 경로로 임포트 할 때, __init__.py파일이 필요해진다. 이 파일이 없으면, 패키지로 간주되지 않기 때문에 상대 경로 import가 제대로 작동하지 않을 수 있다.
아래와 같은 디렉토리 구조를 가진 패키지가 있다고 가정해보면,
my_package/
|-- __init__.py
|-- module1.py
|-- module2.py
__init__.py 파일이 있어야, my_package가 패키지로 인식이 되고, 아래처럼 패키지 내부의 모듈을 임포트 할 수 있게 된다.
from my_package import module1
from my_package.module2 import some_function
하지만, 최신 버전의 Python에서는 __init__.py파일이 없어도 패키지로 간주되는 경우가 있다. 하지만, 하위 버전 호환성을 고려하여 __init__.py를 포함하는 것이 좋다.