2017-11-15 15 views
0

一見シンプルな作業で何度も汗を流しましたが、Pythonでローカルモジュールをインポートするにはどうすればいいですか?Pythonでローカルモジュールをインポートする - ImportError:Not moduleという名前のモジュール*

私は回避策(adding to sys.pathまたはmore robust solutions)について読んだが、他のライブラリは、このような回避策(TFで例えば、this file)を使用しないでください。 私は1つの行にインポートして実行したいと思っています - 私は何かが欠けているに違いない!


具体的な取得するには、私は次のディレクトリのようなものがあります。

project/ 
    foo/ 
    src/ 
    __init__.py 
    bar.py 
    foo/ 
     __init__.py 
     boo.py 

を私はbar.pyに、私は単にfrom foo import booような何かを書くことができ、しかし、私のIDE、PyCharmは、これを見ていることを期待しますエラーとして。解決に思えましたが、それに__file__挿入し、私はsrcフォルダがsys.path[0]であったことを確認し

Traceback (most recent call last): 
    File "bar.py", line 1, in <module> 
    from src.foo import boo 
ImportError: No module named 'src' 

だから、私のIDEを信頼し、私はfrom src.foo import boo試みるが、テストしたとして、これは、はImportErrorになり問題 - 私はまだこの回避策を使いたくはありませんが、最後の手段となります。

私は成功することなくこれを稼働させるために何百万ものトリックを試みました。

回避策を使用せずにローカルモジュールからインポートするにはどうすればよいですか?

+0

例が不完全かもしれませんか?私は2017.2.4で問題を見ることができませんでしたが、未解決の参考文献を報告せず、適切な輸入を提案しました。とにかく、検査を無効にすることは、私にとっては多少極端な回避策のように思えます。 – bgse

+0

私はこれを引き起こすために数年前から設定を変更しているかもしれません。この問題を解決するためにコミュニティ2017.2.4にアップグレードしました。私は、警告として表示されていれば検査を有効にしておきました。これは私の設定で設定されていますが、別のバグで検査がエラーとして表示されるようです。 – Shayn

+1

ああ、コミュニティとプロフェッショナルの微妙な違い、またはあなたが持っているプラ​​グインやカスタム設定の微妙な違いかもしれません。私はここにかなり標準の設定を持っています。 – bgse

答えて

1

この問題はPyCharmのバグが原因です。from foo import barを使用する初期の本能は正しく、PyCharmの想定されるエラーにもかかわらず意図したとおりに動作します。 srcがモジュールであると主張したという事実は、私の頭の中で警報を発していたはずです。

PyCharm警告は無視して、コードを実行することができます。

今後PyCharmが誤解を招くのを防ぐため、「未解決の参照」検査を無効にする必要があります。これは、設定で「未解決参照」を検索し、Python検査を無効にすることで実行できます。

enter image description here

関連する問題