2016-10-28 63 views
6

Pycharm 2016.2.3,Mac OS X 10.11.1,Python 3.5(Homebrew);導入語句適用於PyCharm,但不適用於終端

我有這樣的文件夾結構

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

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

bar.py: 
print("bar") 

所以我的預期輸出是

bar 
foo 

從PyCharm運行時也能正常工作。然而,當我從我的終端上運行它,我得到一個ImportError:

$ 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' 

我發現this question,大約是同樣的問題。然而,沒有一個建議的解決方案適用於我,因爲我確實使用了與PyCharm相同的Python解釋器,我目前位於包含somepackage/文件夾的文件夾中。

有沒有人有任何其他建議如何解決這個問題?非常感謝你!

+1

你somepackage有一個'__init __。py'文件嗎?這表明python是包 – 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)。 –

相關問題