2016-10-28 8 views
6

Pycharm 2016.2.3、Mac OS X 10.11.1、Python 3.5(Homebrew);インポートステートメントは、PyCharmでは動作しますが、端末からは動作しません。

私は、だから私の予想出力は

bar 
foo 

PyCharmから実行したときにこれが正常に動作しているこのフォルダ構造に

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

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

bar.py: 
print("bar") 

を持っています。私は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と同じPythonインタプリタを使用しており、現在はsomepackage/フォルダを含むフォルダにありますので、提案された解決策のどれも私にとってはうまくいきません。

この問題を解決する方法について他に提案がありますか?親切にありがとう!

+1

somepackageに '__init __。py'ファイルがありますか?これはパッケージであることをPythonに示します – Mitta

+0

はい。私は私の質問を編集します、ありがとう! – Pibborn

答えて

8

あなたはスクリプトのようにfoo.pyを実行していますが、実際にはモジュールのように使用しています。だから、適切な解決策は、モジュールとしてそれを実行することです:

export PYTHONPATH=. 

(それとも、そこに絶対的なディレクトリを置くことができ、:

python3 -m somepackage.foo 

記録のために、別の代替は次のようにパスを編集することですもちろん、あなたの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)。 –

関連する問題