~/.profile
にこれがあります:
export PYTHONPATH=/home/dev/python-files
python-files
ディレクトリには、git-hub(flask、curvship、py-vgdl)からクローンされたプロジェクトがいくつかあります。
これらのプロジェクトのサンプルを起動しようとすると、次のようなエラーが表示されます。
$ python ~/python-files/py-vgdl/examples/gridphysics/frogs.py
Traceback (most recent call last):
File "/home/dev/python-files/py-vgdl/examples/gridphysics/frogs.py", line 67, in <module>
from vgdl.core import VGDLParser
ImportError: No module named vgdl.core
PYTHONPATH
環境変数が設定されているので、このエラーが表示されるべきではないようです。
pythonインタラクティブインタープリターの実行:
>>> import os
>>> os.environ["PYTHONPATH"]
'/home/dev/python-files'
PYTHONPATHを完全に上書きするのではなく、追加してみてください。
export PYTHONPATH=$PYTHONPATH:/home/dev/python-files
参照:
モジュールファイルのデフォルトの検索パスを増やします。 [...]
デフォルトの検索パスはインストールに依存しますが、通常は
prefix/lib/pythonversion
で始まります(上記のPYTHONHOME
を参照)。PYTHONPATH
にalwaysが追加されます。
つまり、いくつかの値がPYTHONPATH
に存在し、デフォルトの検索パスも追加されるだけです。
さらに、 このブログ投稿 ( Archive.org link )は、PYTHONPATH
に追加して上書きしない理由を明確に説明しています。セクションまでスクロールダウン-特殊なケースと検索パスを調べると、それが明確に説明されます(残念ながら、そのリンクへの相対URLがないため、スクロールする必要があります) 。ユーザーはMacで例を挙げていますが、どのプラットフォームにも非常に関連しています
次のようにすることもできます。
export PYTHONPATH=$(pwd) **or** export PYTHONPATH=${PWD}
pwdは現在の作業ディレクトリです。
PYTHONPATH
は、チェックアウトの場所ではなく、Pythonパッケージとモジュールの場所を指す必要があります。つまり、ls "$PYTHONPATH"
を実行すると、*.py
ファイル(Pythonモジュール)と__init__.py
ファイルを含むディレクトリ(Pythonパッケージ)。
したがって、import vgdl
を使用できるようにする場合、PYTHONPATH
は次のようになります。
PYTHONPATH=/home/dev/python-files/py-vgdl
vgdl
packageはpy-vgdl
内ではなく、python-files
内にあるためです。
他のパスも追加するには、:
を使用してそれらを分離できます。
PYTHONPATH="/home/dev/python-files/py-vgdl:/home/dev/python-files/something:$PYTHONPATH"
これは確かに機能しますが、そのような場合、PYTHONPATH
の使用は複雑すぎる場合があります。 virtualenv
を使用することをお勧めします。これは、あなたのような状況を単純化するために意図的に作成されています。あなたがしなければならないことは基本的にです:
virtualenv env
source env/bin/activate
pip
またはsetup.py
スクリプトを使用して実行できます。Virtualenvは 十分に文書化されている であり、何か助けが必要な場合は、新しい質問を開くことをお勧めします。