2016-05-27 7 views
2

に私は次のように輸入品の多くのPythonのプロジェクトを持っていない:インポートは、コンソールでの作業が、pyCharm

from src.main.fr.some.module import someclass 

、それは良い仕事をしていたが、私の同僚は、輸入品は次のようになりたかった:

from fr.some.module import someclass 

export PYTHONPATH="/home/giffon/Documents/wopmars/src/main:/home/giffon/Documents/wopmars/src/test" 

は、その後、私は次のように私のvirtualenvactivateスクリプトでPYTHONPATHを変更しました

となり、src.main.fr.some.moduleはすべてfr.some.moduleに置き換えられました。

次に、私のコードをコンソールで試してみましたが、出力は良好でした(私のコードの冒頭にPYTHONPATHが印刷されており、/home/giffon/Documents/wopmars/src/mainが期待どおりに見えることに注意してください)。

(WopMars)[email protected]:~/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing$ python3 Parser.py 
PRINTING THE PYTHONPATH 
/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pyparsing-2.1.4-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/cycler-0.10.0-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pytz-2016.4-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/python_dateutil-2.5.3-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/six-1.10.0-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/numpy-1.11.0-py3.4-linux-x86_64.egg 
/home/giffon/Documents/wopmars/src/main 
/home/giffon/Documents/wopmars/src/test 
/home/giffon/virtualenvs/WopMars/lib/python3.4 
/home/giffon/virtualenvs/WopMars/lib/python3.4/plat-x86_64-linux-gnu 
/home/giffon/virtualenvs/WopMars/lib/python3.4/lib-dynload 
/usr/lib/python3.4 
/usr/lib/python3.4/plat-x86_64-linux-gnu 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages 



Reading the definition file... -> done. 
Checking whether the file is well formed... -> done. 
Building the execution DAG... -> done. 
Writing the dot file... -> done. 

しかし、pycharmを使用しているため、私はIDEに自分の変更を考慮してもらいたいと思いました。そしてここに問題が来る。

私は次の操作を行って、インタプリタのPythonパスを変更する必要があることをどこかで読ん:

ファイル]> [設定]> [プロジェット:wopmars>プロジェット通訳>「ホイール」> もっと...>「ショーパス選択されたインタプリタ(選択wopMarsインタプリタ )のために」> +> "OK> /ホーム/ giffon /ドキュメント/ wopmars/srcに/メイン"> 玉>玉>適用に

を閲覧し、私が実行上記と同じコード:

/home/giffon/virtualenvs/WopMars/bin/python3 /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing/Parser.py 
PRINTING THE PYTHONPATH 
/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pyparsing-2.1.4-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/cycler-0.10.0-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pytz-2016.4-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/python_dateutil-2.5.3-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/six-1.10.0-py3.4.egg 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/numpy-1.11.0-py3.4-linux-x86_64.egg 
/home/giffon/Documents/wopmars/src/test 
/home/giffon/Documents/wopmars/src/main 
/home/giffon/virtualenvs/WopMars/lib/python3.4 
/home/giffon/virtualenvs/WopMars/lib/python3.4/plat-x86_64-linux-gnu 
/home/giffon/virtualenvs/WopMars/lib/python3.4/lib-dynload 
/usr/lib/python3.4 
/usr/lib/python3.4/plat-x86_64-linux-gnu 
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages 



Traceback (most recent call last): 
    File "/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing/Parser.py", line 12, in <module> 
    from fr.tagc.wopmars.framework.management.DAG import DAG 
ImportError: No module named 'fr.tagc.wopmars.framework.management.DAG' 

はおそらく/home/giffon/Documents/wopmars/src/mainがpycharm インタプリタのパスの設定が考慮されていることを意味PYTHONPATHに表示されていることに気づきました。したがって、通訳者はモジュールを見つける場所を知っていますが、frを見ることはできません...この問題を解決する方法はありますか?

それは、この問題を解決するために、おそらく興味深いものではありませんが、エラー調達コードは次のとおりです。

print("PRINTING THE PYTHONPATH")       
for p in sys.path:           
    print(p)            
print("\n\n")            


from fr.tagc.wopmars.framework.management.DAG import DAG 

注:.profilePYTHONPATHまたは.bashrc私に同じ結果

注2を与えたの変更:私がPYTHONPATHをエクスポートしないと、コンソールはpycharmと同じエラーを返します

+1

これを見てみましょう:http://stackoverflow.com/a/7334681/620382 – Zulan

+0

おかげでたくさん、私は私の問題を考え出しし、自分の質問に答えました。 –

答えて

0

私は解決します私の問題はZulanのコメントのおかげです。

TLDR:

pycharmインタプリタPYTHONPATHsrc/test/ 1前src/main/ディレクトリを置きます。pycharmとコンソールの両方でPythonインタプリタのための-vオプションを使用して


は、私は次の出力を持っている:

コンソール出力:

# /home/giffon/Documents/wopmars/src/main/fr/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/main/fr/__pycache__/__init__.cpython-34.pyc' 
import 'fr' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b160> 
# /home/giffon/Documents/wopmars/src/main/fr/tagc/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b358> 
# /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc.wopmars' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b400> 
# /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc.wopmars.framework' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b4a8> 
# /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/management/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc.wopmars.framework.management' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b550> 

Pycharm出力:

# /home/giffon/Documents/wopmars/src/test/fr/tagc/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc' # <_frozen_importlib.SourceFileLoader object at 0x7fb1532422e8> 
# /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc.wopmars' # <_frozen_importlib.SourceFileLoader object at 0x7fb153242390> 
# /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc.wopmars.framework' # <_frozen_importlib.SourceFileLoader object at 0x7fb153242438> 
# /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/management/__init__.py 
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc' 
import 'fr.tagc.wopmars.framework.management' # <_frozen_importlib.SourceFileLoader object at 0x7fb1532424e0> 
Traceback (most recent call last): 
    File "/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing/Parser.py", line 12, in <module> 
    from fr.tagc.wopmars.framework.management.DAG import DAG 
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked 
ImportError: No module named 'fr.tagc.wopmars.framework.management.DAG' 

あなたは2つの出力の間に若干の違いがあることに気づいたかもしれません。 wopmars/src/main/ pycharmインタープリタはwopmars/src/test/で検索します。

私が印刷さPYTHONPATHを注意深く見ている場合、実際に、彼らは同じではありません。コンソールで

  • /home/giffon/Documents/wopmars/src/mainは、それが逆
  • だ、Pycharmでリスト sys.path
  • /home/giffon/Documents/wopmars/src/testの前に表示されます

次に、 /home/giffon/Documents/wopmars/src/mainの後にpycharmで完璧に働きましたまあ。私はPythonインタプリタが、その後、彼は終わりを見つけて、他の経路で見なくてもエラーは発生しませんsrc/test/でモジュール名の最初の部分を見つけ始めることを考えてみてください。

関連する問題