7

我对tcsh没有太多经验,但我有兴趣学习。我在让 Python 看到 PYTHONPATH 时遇到问题。我可以回显 $PYTHONPATH,这是正确的,但是当我启动 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 调用的shell 变量,使用“setenv”设置环境变量。因此,您需要使用 setenv 才能让 Python 看到它。例如:

$ 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 回答
1

确保您没有使用该-E选项启动 python(即:忽略环境变量)。如果您通过 shell 脚本或其他应用程序启动 python,只需仔细检查它不会添加任何内容。

由于 sys.path 的列表很长,因此很难错过您的路径。PYTHONPATH 的东西通常被添加到列表的中间,在所有库路径之后。有没有可能你的路径在那里,只是埋在中间?

于 2009-03-05T20:26:27.270 回答
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 回答