2017-01-28 6 views
0

私はこれの絶対的な馬鹿のように感じるつもりです、そして、それが金曜日の遅れであるかどうかわかりませんが、なぜ私は問題を抱えているのかを理解するのに苦労しています。この信じられないほど単純なコードで。ImportError:いいえモジュール

ディレクトリ構造:

~/testapp/ 
~/testapp/__init__.py 
~/testapp/settings.py 
~/testapp/workers/a.py 

〜/ testappと/ settings.py:

x = 1 

〜/ testappと/労働/ a.py:

from settings import x 

実行している〜/ testapp/workers/a.pyをPyCharm経由で実行しても問題ありません。ただし、端末で実行しているとき、私が取得:

[email protected]:~$ python testapp/workers/a.py 
Traceback (most recent call last): 
    File "testapp/workers/a.py", line 1, in <module> 
    from settings import x 
ImportError: No module named settings 

私も〜/ testappと/労働者/ a.pyで、次の試してみました:

from testapp.settings import x 

をし、同じエラーを得ました。

from ..settings import x 

が、これは戻ります::私も試してみた

[email protected]:~/$ python testapp/workers/a.py 
Traceback (most recent call last): 
    File "python testapp/workers/a.py", line 1, in <module> 
    from ..settings import testvar 
ValueError: Attempted relative import in non-package 

は、私はこの同じインポート方法を使用し、以前のアプリケーションの多くを走ってきた、と問題を抱えていたことがありません。なぜ私は突然これが起こっているのか分かりません。

このような他の問題をstackoverflowとgoogleで見てみると、私がやったシステムパスの設定と確認が誰もが言及しています。前述したように、PyCharmでこれを実行するとうまく動作します。インポートの前に〜/ testapp/workers/a.pyを変更してsys.path、sys.executable、os.getcwd()を出力すると、PyCharmとコンソールの結果は同じになります。

答えて

1

この問題は、あなたが言うように、パスに関連しています...コードを実行すると、インタプリタには、インポートするものを探す場所のリストがあります。この場合、プロジェクトのルートディレクトリは認識されません。

問題を解決するには、環境変数PYTHONPATHをプロジェクトのルートディレクトリに設定します。このようなもの:

export PYTHONPATH=~/testapp