Python/포스팅

파이썬 relative 패키지

짜집퍼박사(짜박) 2023. 12. 3. 13:14

상대적 패키지는 현재 모듈이나 패키지를 기준으로 다른 패키지나 모듈을 상대적으로 참조하는 방법을 말합니다. 이를 통해 프로젝트 구조를 더욱 유연하게 관리할 수 있습니다.

다음은 상대적 패키지를 사용하는 방법에 대한 자세한 설명입니다.

 

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