상대적 패키지는 현재 모듈이나 패키지를 기준으로 다른 패키지나 모듈을 상대적으로 참조하는 방법을 말합니다. 이를 통해 프로젝트 구조를 더욱 유연하게 관리할 수 있습니다.
다음은 상대적 패키지를 사용하는 방법에 대한 자세한 설명입니다.
1. 상대적인 참조 (Relative Import)
패키지 내에서 다른 모듈이나 패키지를 상대적으로 참조하려면, . (현재 디렉터리), .. (상위 디렉터리) 등의 상대 경로를 사용합니다.
예를 들어, 다음과 같은 프로젝트 구조가 있다고 가정합니다.
mypackage/
|-- __init__.py
|-- module1.py
|-- module2.py
|-- subpackage/
| |-- __init__.py
| |-- module3.py
| |-- module4.py
|-- script.py
예시 1: 현재 모듈에서 상대적 참조
# mypackage/module1.py
from .module2 import func2
def func1():
print("Function 1")
func2()
예시 2: 서브 패키지에서 상대적 참조
# mypackage/subpackage/module3.py
from ..module1 import func1
def func3():
print("Function 3")
func1()
2. __init__.py 파일과 상대적 참조
__init__.py 파일은 상대적 참조에서도 역할을 합니다. 상대적인 참조를 사용할 때에는 __init__.py 파일이 있는 디렉터리가 패키지로 인식되어야 합니다.
예시: __init__.py 파일을 이용한 서브 패키지 초기화
# mypackage/subpackage/__init__.py
from ..module2 import func2
print("Initializing subpackage")
# 모듈3과 관련된 초기화 코드
# mypackage/subpackage/module3.py
def func3():
print("Function 3")
3. 스크립트에서 상대적 참조
상대적 참조는 스크립트에서도 사용할 수 있습니다.
예시: 스크립트에서 상대적 참조
# script.py
from mypackage.module1 import func1
from mypackage.subpackage.module3 import func3
func1() # 현재 디렉터리에서 module1.py를 불러오고, module2.py의 함수를 실행
func3() # 상위 디렉터리(subpackage)에서 module3.py를 불러오고, module1.py의 함수를 실행
상대적인 참조를 사용하면 프로젝트의 구조를 유연하게 유지하고 코드의 이동이나 리팩토링에 대응할 수 있습니다. 하지만 상대적 참조를 남용하면 가독성이 떨어지고 모듈 간의 의존성이 복잡해질 수 있으므로 신중하게 사용해야 합니다.
With ChatGPT
'Python > 포스팅' 카테고리의 다른 글
파이썬 오류는 언제 발생하는가? (0) | 2023.12.03 |
---|---|
파이썬 예외 처리 (0) | 2023.12.03 |
파이썬 init__.py 의 용도 (0) | 2023.12.03 |
파이썬 패키지 안의 함수 실행 (0) | 2023.12.03 |
파이썬 패키지 생성 (0) | 2023.12.03 |