을 찾을 수 없습니다. 이것은 매우 간단한 문제이며, 나는 아주 확실한 것을 놓쳤다 고 확신합니다. 그러나이 곤경에 대한 대답은 지금 몇 시간 동안 나를 피했습니다.Python Relative Import가 패키지
내 프로젝트 디렉토리 구조는 다음과 같습니다
-PhysicsMaterial
-Macros
__init__.py
Macros.py
-Modules
__init__.py
AvgAccel.py
AvgVelocity.py
-UnitTests
__init__.py
AvgAccelUnitTest.py
AvgVelocityUnitTest.py
__init__.py
비판 따로 내 이름 지정 규칙을 여기 디렉토리 구조에, 나는 상대의 수입을 사용할 수 있도록 수없는 것. 내가 상대 수입에 모듈 파일을 시도하고있어하는 AvgAccelUnitTest.py에서 테스트 할 : 나는 파일을 설정 내 초기화를 모두 가지고 있기 때문에
ValueError: Attempted relative import in non-package
:
from .Modules import AvgAccel as accel
는 그러나, 나는 점점 계속 내 구조 전반에 걸쳐, 그리고 또한 상위 디렉토리가 내 PYTHONPATH에 추가되었습니다, 나는 곤두박질 쳤습니다. 왜 파이썬은 패키지를 해석하지 않고 파일을 올바르게 임포트하지 않습니까?
@ Brendan Abel 정보를 제공해 주셔서 감사합니다. 좀 더 연구를 한 후에, 나는 똑같은 결론을 내 렸습니다. 궁극적으로, 나는 sys.path.append를 사용하고 절대적인 임포트를 수행하게되었습니다. 디렉토리 안에 모듈을 재배치 할 생각이 없기 때문에 더 신경 쓰지 않아야합니다. 이것은 실제로 필자가 필요로했던 함수 데코레이터와 관련된 또 다른 import 문제를 해결해 주므로 두 가지 장점이 있습니다! –
다른 모듈이 명령 줄에서 실행중인 동일한 모듈을 가져 오는 경우에도 문제가 계속 발생할 수 있습니다. –
내가 그 다리에 올 때 나는 그것을 건너 뛸 것 같아. 그때가되면 더 나은 해결책을 찾을 수있을 것입니다. 이것은 출품 할 의도가 거의없는 취미 프로그램 일 뿐이므로 좋다고 생각합니다. –