2016-09-30 3 views
0

나는 현재 다음과 같은 디렉터리 구조를 가질 :파이썬 가져 오기 오류 작동하지

Folder/ 
    package/ 
     __init__.py, .. many python files 
    subfolder/ 
     file1.py 

이제 내 문제는 내가 Folder 디렉토리에 오전입니다. 나는 파이썬을 실행하고 import package을 실행할 수있다. 이것은 잘 작동합니다. 그러나 내 file1.py에서 처음에 package을 가져 왔지만 python subfolder/file1.py을 실행하면 package 모듈을 찾을 수 없습니다.

편집 : 내가 현재 가지고 __ init__.py (2 개 밑줄)

+0

file1.py에서 패키지를 어떻게 가져 옵니까? – MMF

+1

'_init_.py'의 이름을'__init __. py'로 바꾸면 도움이 될 것입니다 –

+0

밑줄이 오타라고 의심됩니다. 문제가 해결 되더라도 문제가 남아 있습니다. – kfb

답변

0

이름 바꾸기 _init_.py (두 개의 밑줄) 후자의 경우

2

, 그것은 sys.path을에 표시되지 않기 때문에 파이썬은 package을 찾을 수 없습니다 __init__.py에 . sys.path은 현재 실행중인 스크립트의 상위 디렉토리를 포함합니다.

Folder에서 파이썬을 실행할 때이 항목은 /path/to/Folder이고 import package은 정확하게 package 디렉토리를 찾습니다. 두 번째 경우에이 항목은 /path/to/Folder/subfolder이고 import package/path/to/Folder/subfolder/package을 찾으려고하기 때문에 실패합니다.

+0

다음이 문제를 해결하는 좋은 방법은 무엇입니까? – user3362840

+0

당신이 달성하고자하는 것을 모른 채이 질문에 대답하는 것은 어렵습니다. 스크립트 안에서'sys.path'를 조작하여 올바른 패키지를 범위 안으로 가져올 수 있습니다 (즉,'package'를 가져 오기 전에'file1.py'에서'sys.path'에'/ path/to/Folder'를 추가하는 것). 종종 아키텍처를 다시 생각하는 것이 더 나은 방법입니다. – kfb