Python의 상대 가져오기: 자세한 설명
여러 하위 패키지가 포함된 구조화된 디렉터리로 작업할 때 다른 하위 패키지에서 모듈을 가져오는 것은 공통 요구 사항. 그러나 from ..sub2 import mod2와 같은 상대 가져오기를 사용하는 표준 접근 방식은 특정 시나리오에서 실패할 수 있습니다.
이는 제공된 디렉터리 구조 내에서 mod1에서 mod2를 가져오려는 개발자의 경우입니다. 질문에. "비패키지에서 상대 가져오기 시도" 오류 메시지는 상대 가져오기에 문제가 있음을 나타냅니다.
문제의 근본 원인은 모듈이 인수로 전달되어 __main__으로 실행되고 있다는 사실에 있습니다. 통역사. PEP 328에 따르면 상대 가져오기는 모듈의 __name__ 속성을 사용하여 패키지 계층 구조에서의 위치를 결정합니다. 모듈 이름이 __main__으로 설정되면 파일 시스템의 실제 위치에 관계없이 모듈이 최상위 모듈인 것처럼 상대 가져오기가 해결됩니다.
이 동작은 가져오려고 할 때 혼란을 초래할 수 있습니다. 다른 하위 패키지의 모듈. 이 문제를 해결하려면 스크립트에 코드를 배치하고 import sub2.mod2와 같은 절대 가져오기를 사용하여 명시적으로 관련 하위 패키지를 가져오는 것이 좋습니다.
그러나 Python 2.6 이상에서는 모듈을 참조하는 기능이 있습니다. 메인 모듈과 관련하여 소개되었습니다. PEP 366은 이러한 변경 사항을 설명합니다. 상대 가져오기를 효과적으로 사용하려면 __main__을 사용하는 대신 기본 모듈을 참조하는 것이 중요합니다. 이는 다음과 같은 다양한 방법으로 달성할 수 있습니다.
이러한 기술을 채택함으로써 개발자는 Python 프로젝트를 구성하고 구조화된 방식으로 모듈 간의 종속성을 관리하기 위해 상대 가져오기를 효과적으로 활용할 수 있습니다.
위 내용은 모듈이 `__main__`으로 실행될 때 Python에서 상대 가져오기가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!