PYTHONPATH環境変数


19

私はこれを持っています~/.profile

export PYTHONPATH=/home/dev/python-files

ではpython-files、ディレクトリ、私はgitのハブ(フラスコ、curveshipと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'

回答:


35

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

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

参照:

PYTHONPATHのPythonドキュメントによると

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

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

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

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


1
@Garrettありがとう:) Archive.orgリンクで更新。
ニティンベンカテッシュ

アーカイブ/ステレオプレックスリンクの場合は+1。多くの質問に答えているので、公式のPythonドキュメントのフロントページにあるはずです!
マリクA.ルミ

5

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

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

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


注意してください、これはプロセスのPYTHONPATHを上書きします!PYTHONPATHにpwdを追加する場合:export PYTHONPATH=$PYTHONPATH:$(pwd)
jackw11111

4

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

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

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

ため、vgdl パッケージが内部でpy-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は十分に文書化されており、何か助けが必要な場合は、新しい質問を開いてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.