2016-10-28 3 views
6

Pycharm 2016.2.3, Mac OS X 10.11.1, Python 3.5 (Homebrew);Import 문은 PyCharm에서 작동하지만 터미널에서는 작동하지 않습니다.

내가이 폴더 구조를

project 
    /somepackage 
    /subpackage 
    __init__.py 
    bar.py 
    __init__.py 
    foo.py 

foo.py: 
import somepackage.subpackage.bar 
print("foo") 

bar.py: 
print("bar") 

이 그래서 내 예상 출력은 PyCharm에서 실행할 때이 잘 작동

bar 
foo 

입니다. 내가 this question을 발견

$ pwd 
$ /home/project (not the actual path; just omitting some personal stuff) 
$ python3.5 somepackage/foo.py 
File "foo.py", line 1, in <module> 
import somepackage.subpackage.bar 
ImportError: No module named 'somepackage' 

, 동일한 문제에 관한 것입니다 : 내 단말기에서 실행할 때, 나는 ImportError를 얻을. 그러나 PyCharm과 동일한 파이썬 인터프리터를 실제로 사용하고 있으며 현재 somepackage/ 폴더가있는 폴더에 있기 때문에 제안 된 솔루션 중 아무 것도 나를 위해 작동하지 않습니다.

누구든지이 문제를 해결하는 방법에 대한 다른 제안이 있습니까? 감사합니다!

+1

somepackage에'__init __. py' 파일이 있습니까? 이것은 파이썬에 패키지라는 것을 나타냅니다. – Mitta

+0

예. 내 질문을 편집 할 것입니다, 감사합니다! – Pibborn

답변

8

foo.py는 스크립트처럼 실행하고 있지만 실제로는 모듈처럼 사용하고 있습니다. 그래서 적절한 솔루션을 모듈로 실행하는 것입니다

기록을 위해
python3 -m somepackage.foo 

또 다른 대안은 같은 경로를 편집하는 것입니다 :

export PYTHONPATH=. 

(또는 당신이 거기에 절대 디렉토리를 둘 수 있었다, 그리고 물론 이미 PYTHONPATH에있는 다른 디렉토리를 추가해야합니다.) 이것은 PyCharm이하는 일에 더 가깝지만 철학적으로 덜 정확합니다.

+0

두 가지 제안이 모두 적용됩니다. 고맙습니다! – Pibborn

+0

접근법 # 1이 저에게 효과적이었습니다. 이 문서는 어디에 문서화되어 있습니까? – alex

+1

@alex [명령 줄 및 환경 문서] (https://docs.python.org/3/using/cmdline.html)에 나와 있지만 해결책을 이미 알지 못하는 한 거기에 보이는 것이 분명하지 않습니다! 튜토리얼의 [Modules] 섹션 (https://docs.python.org/3/tutorial/modules.html) 또는 고도의 기술 [Import System reference docs] (https :// /docs.python.org/3/reference/import.html). –