복붙노트

[PYTHON] 상위 폴더 하위 폴더에서 상대 가져 오기 모듈

PYTHON

상위 폴더 하위 폴더에서 상대 가져 오기 모듈

이와 같은 디렉토리 구조가 주어진다.

/main/
/main/common/foo.py
/main/A/
/main/A/src/
/main/A/src/bar.py

어떻게하면 Python의 상대 임포트를 사용하여 막대에서 foo를 가져올 수 있습니까? 나는 경로에 그것을 추가하여 작업 솔루션을 가지고 있지만, 이것은 추한 것입니다. Python 2.7에서 단일 가져 오기를 사용하여 간단하게 할 수 있습니까?

이것은이 질문의보다 복잡한 버전입니다.

상위 폴더에서 모듈 가져 오기

해결법

  1. ==============================

    1.올바른 상대 가져 오기는 다음과 같습니다.

    올바른 상대 가져 오기는 다음과 같습니다.

    from ...common import foo
    

    그러나 상대적 가져 오기는 하나의 패키지 내에서만 작동합니다. main이 패키지 인 경우 여기에서 상대적 가져 오기를 사용할 수 있습니다. main이 패키지가 아니라면 그렇게 할 수 없습니다.

    따라서 / main /에서 스크립트를 실행하고 A.src.bar 가져 오기와 같은 작업을 수행하는 경우 "상대 패키지를 넘어서 가져 오기 시도"로 해당 가져 오기가 실패합니다. 이는 상대적 가져 오기가 최상위 패키지 A 외부로 가져 오기를 시도하기 때문입니다.

    그러나 main.A.src.bar 가져 오기와 같은 스크립트를 실행중인 경우 main이 이제 패키지이므로 해당 가져 오기가 성공합니다. 이 경우 다음 2 개는 동일합니다.

    from ...common import foo
    from main.common import foo
    

    귀하의 의견에 대답하십시오 :의 의미. 스크립트가 실행 된 위치에 따라 바뀌지 않지만 패키지 구조에 따라 바뀝니다.

  2. from https://stackoverflow.com/questions/14057464/relative-importing-modules-from-parent-folder-subfolder by cc-by-sa and MIT license