11

環境: debian 4.0

パイソン 2.4

私の「プロジェクト」は次の場所にインストールされています:

/usr/lib/python2.4/site-packages/project.

しかし、次の場所にあるインストール済みのコピーの代わりに、自分の作業コピーを使用したいです。

/home/me/dev/project/src

だから私がすることは次のとおりです。

export PYTHONPATH=/home/me/dev/project/src

ipython

src にある import foo #

foo.__file__

*/usr/lib/python2.4/site-packages/project/foo.py*

それ以外の :

/home/me/dev/project/src/project/foo.py

どうして?パスを確認しようとしました(上記のエクスポートを行った後)。表示されるのは次のとおりです。

インポート システム、OS

sys.path

['', '/usr/bin', '/usr/lib/python2.4/site-packages', '/home/me/dev/project/src', '/usr/lib/python24.zip', 「/usr/lib/python2.4」、「/usr/lib/python2.4/plat-linux2」、「/usr/lib/python2.4/lib-tk」、「/usr/lib/python2.4」 /lib-dynload'、'/usr/local/lib/python2.4/site-packages'、'/usr/lib/python2.4/site-packages/PIL'、'/var/lib/python-support/ python2.4', '/usr/lib/python2.4/site-packages/IPython/Extensions', '/home/me/.ipython']

os.environ['PYTHONPATH']

/home/me/dev/project/src

4

7 に答える 7

6

Pythonのドキュメントによると、これは予想される動作です: https://docs.python.org/2.4/lib/module-sys.html :

PYTHONPATH の結果として挿入されるエントリの前にスクリプト ディレクトリが挿入されることに注意してください。

python-2.6 では異なります: http://docs.python.org/tutorial/modules.html#the-module-search-path

于 2009-06-16T15:06:09.503 に答える
5

私は問題を見つけました (誰かがWhere is Python's sys.path initialized from?を私に指摘したとき、私は早い段階で見逃していました)。

easy_install が pth ファイル /usr/lib/python2.4/site-packages/easy-install.pth を作成し、それが site.py によって読み込まれるようです。これにより、PYTHONPATH の前の sys パスに site-packages パスが挿入されます。よくない。

于 2009-06-16T16:31:17.047 に答える
4

PYTHONPATH が実際のパス リストに挿入される場所を制御できるとは思えません。しかし、パスを変更する方法はこれだけではありません。プロジェクトをインポートする前に、sys.path を自分で更新できます。

編集:特定のケースでは、パスを変更できます

import sys
sys.path.insert(2, '/home/me/dev/project/src')
于 2009-06-16T14:58:43.417 に答える
1

質問に対する直接的な回答ではありませんが、virtualenvを使用して開発環境を作成することもできます。その virtualenv で、製品を/home/me/dev/project/src開発パッケージ " python setup.py develop" としてインストールできます。

PYTHONPATHこの方法では、手動で変更する必要はありません。開発コードを使用する場合は、virtualenv を有効にするだけです。

于 2009-06-16T15:39:10.793 に答える
1

「/home/me/dev/project/src」の前のパスに「/usr/lib/python2.4/site-packages」が表示されますが、それは問題ですか? 2つを切り替えるとどうなりますか?

ドキュメントから:

PYTHONPATH が設定されていない場合、またはファイルが見つからない場合は、インストールに依存するデフォルト パスで検索が続行されます。

おそらく、あなたが思っていたように、PYTHONPATH に作業コピーが見つからなかったのでしょうか?

于 2009-06-16T14:53:05.410 に答える
0

ディレクトリにファイルsrcがないようです。__init__.py適切なパッケージではありません。

于 2009-06-16T15:12:44.107 に答える
0

/home/me/dev/project/src は sys.path に表示されませんが、/home/me/build/project/src には表示されるため、PYTHONPATH を /home/me/build/project/src に設定したと思います。

于 2009-06-16T14:43:15.383 に答える