Python의 상대 가져오기
Python에서는 패키지 내에서 모듈을 가져오는 것이 까다로운 작업일 수 있습니다. 다음 디렉토리 구조를 고려하십시오.
app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py
mod1.py에서 작업 중이고 mod2.py에서 무언가를 가져와야 한다고 가정해 보겠습니다. 다음을 시도해 볼 수 있습니다.
from ..sub2 import mod2
그러나 이렇게 하면 "비패키지에서 상대 가져오기 시도" 오류가 발생합니다. 해결책은 Python이 파일 시스템 위치에 관계없이 __main__(예: python mod1.py)으로 실행되는 모듈을 최상위 모듈로 해석한다는 사실에 있습니다.
상대 가져오기를 활성화하려면 가져오기 모듈이 __main__으로 실행 중입니다. 이는 패키지를 기본 모듈로 사용하여 인터프리터를 실행하여 수행할 수 있습니다:
python -m app.sub1.mod1
또는 __package__ 속성을 사용하여 상위 패키지를 수동으로 지정할 수 있습니다:
import sys sys.path.insert(0, '..') from sub2.mod2 import MyClass
이것은 메서드는 시스템 경로를 조작하지만 모듈을 __main__으로 실행할 필요는 없습니다.
그러나 상대 가져오기의 경우 하위 패키지 내에서 작업하려면 __init__.py 파일이 각 디렉터리에 있는지 확인하는 것이 중요합니다. 이러한 파일은 패키지 마커 역할을 하며 __package__ 속성을 활성화하여 포함 패키지를 참조합니다.
위 내용은 Python 패키지에서 상대 가져오기를 성공적으로 수행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!