7

私は tcsh の経験はあまりありませんが、学ぶことに興味があります。Python に PYTHONPATH を表示させるのに問題がありました。$PYTHONPATH を echo できますが、正しいのですが、Python を起動すると、パスが sys.path に表示されません。何か案は?

編集:

[dmcdonal@tg-steele ~]$ echo $PYTHONPATH
/home/ba01/u116/dmcdonal/PyCogent-v1.1

>>> from sys import path
>>> from os import environ
>>> path
['', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/FiPy-2.0-py2.5.egg', '/apps/steele/Python-2.5.2', '/apps/steele/Python-2.5.2/lib/python25.zip', '/apps/steele/Python-2.5.2/lib/python2.5', '/apps/steele/Python-2.5.2/lib/python2.5/plat-linux2', '/apps/steele/Python-2.5.2/lib/python2.5/lib-tk', '/apps/steele/Python-2.5.2/lib/python2.5/lib-dynload', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/Numeric']
>>> environ['PYTHONPATH']
'/apps/steele/Python-2.5.2'
4

4 に答える 4

10

PYTHONPATH をどのように設定していますか? tcsh の set と setenv を混同しているかもしれません。「set」を使用して tcsh が呼び出すシェル変数を設定し、「setenv」を使用して環境変数を設定します。したがって、Python がそれを認識できるようにするには、setenv を使用する必要があります。例えば:

$ set FOO='bar'
$ echo $FOO
bar
$ python -c 'import os; print os.getenv("FOO")'
None

$ setenv BAR 'wiz'
$ echo $BAR
wiz
$ python -c 'import os; print os.getenv("BAR")'
wiz

tcsh ドキュメントの変数のセクションで、さらに詳しい情報を入手できます。

于 2009-03-05T20:54:26.940 に答える
0

小切手:

  1. PYTHONPATH は os.environ にあります。
  2. コロンで区切られたパスのリストの正しい値に設定します。

そうであり、パスが sys.path にないことを確認できる場合は、バグが見つかりました。

os.environ にない場合、環境は Python にパススルーしていません (おそらく別のバグ)。

もちろん、実際のコード/エクスポートを見せてください。誰かがすぐに教えてくれます。

于 2009-03-05T20:43:58.930 に答える
0

Python を使用したときに環境PYTHONPATHを正しく設定しても、 Python に切り替えると同じ問題が発生し、正常に動作します。Pythonのバグのようです。.cshrc2.5.12.6.2

于 2011-01-20T07:45:11.953 に答える