: 나는 파이썬 콘솔을 열고 (import companynamespace.projectpackage
을 입력파이썬
import companynamespace.projectpackage.somemodule as module_shortname
:
companynamespace/
__init__.py
projectpackage/
__init__.py
somemodule.py
companynamespace/__init__.py
이
projectpackage/__init__.py
비어는이 라인을 가지고 PYTHONPATH가 올바르게 설정 됨) import companynamespace.projectpackage.somemodule as module_shortname
행에 AttributeError: 'module' object has no attribute 'projectpackage'
이 표시됩니다. as module_shortname
부분을 제거하고 (파일의 나머지 부분에서 필요한 모든 대체 작업을 수행하면) 모든 것이 올바르게 가져옵니다.
아무도 왜 이것이 내게 말할 수 있습니까? 내 Google-Fu가 실패합니다.
진단 (즉, 순환 수입 문제)은 정확하지만 설명 및 제안 된 해결책은 적절하지 않습니다. 'projectpackage/__ init __. py'가 실행될 때,'companynamespace'의'projectpackage' 속성은 아직 설정되지 않았습니다. 따라서 특정한 오류가 발생합니다. 현재 파이썬의 경우 명시 적 상대 가져 오기 ('.sim import somemodule')는 암시 적 상대 가져 오기에 의존하는 것보다 나은 선택입니다. – ncoghlan
피할 수없는 세부 사항은 http://bugs.python.org/issue992389에 있습니다. – ncoghlan
감사합니다. 필자는 순환적인 가져 오기 문제를 생각해 냈지만 파이썬이 어떤 기능을 해결해야하는지 전혀 몰랐습니다. –