web-dev-qa-db-ja.com

PYTHONPATH環境変数

~/.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'
17
jerome

PYTHONPATHを完全に上書きするのではなく、追加してみてください。

export PYTHONPATH=$PYTHONPATH:/home/dev/python-files

参照:

PYTHONPATHのPythonドキュメント

モジュールファイルのデフォルトの検索パスを増やします。 [...]

デフォルトの検索パスはインストールに依存しますが、通常はprefix/lib/pythonversionで始まります(上記のPYTHONHOMEを参照)。 PYTHONPATHalwaysが追加されます。

つまり、いくつかの値がPYTHONPATHに存在し、デフォルトの検索パスも追加されるだけです。

さらに、 このブログ投稿Archive.org link )は、PYTHONPATHに追加して上書きしない理由を明確に説明しています。セクションまでスクロールダウン-特殊なケースと検索パスを調べると、それが明確に説明されます(残念ながら、そのリンクへの相対URLがないため、スクロールする必要があります) 。ユーザーはMacで例を挙げていますが、どのプラットフォームにも非常に関連しています

30
Nitin Venkatesh

次のようにすることもできます。

export PYTHONPATH=$(pwd) **or** export PYTHONPATH=${PWD}

pwdは現在の作業ディレクトリです。

5

PYTHONPATHは、チェックアウトの場所ではなく、Pythonパッケージとモジュールの場所を指す必要があります。つまり、ls "$PYTHONPATH"を実行すると、*.pyファイル(Pythonモジュール)と__init__.pyファイルを含むディレクトリ(Pythonパッケージ)。

したがって、import vgdlを使用できるようにする場合、PYTHONPATHは次のようになります。

PYTHONPATH=/home/dev/python-files/py-vgdl

vgdlpackagepy-vgdl内ではなく、python-files内にあるためです。

他のパスも追加するには、:を使用してそれらを分離できます。

PYTHONPATH="/home/dev/python-files/py-vgdl:/home/dev/python-files/something:$PYTHONPATH"

これは確かに機能しますが、そのような場合、PYTHONPATHの使用は複雑すぎる場合があります。 virtualenv を使用することをお勧めします。これは、あなたのような状況を単純化するために意図的に作成されています。あなたがしなければならないことは基本的にです:

  1. 環境を作成します:virtualenv env
  2. 「アクティブ化」:source env/bin/activate
  3. パッケージをインストールします。これは、パッケージのpipまたはsetup.pyスクリプトを使用して実行できます。
  4. 楽しい。

Virtualenvは 十分に文書化されている であり、何か助けが必要な場合は、新しい質問を開くことをお勧めします。

3