2009-03-05 62 views
6

我對tcsh沒有太多經驗,但我對學習感興趣。我一直有問題讓Python看到PYTHONPATH。我可以回顯$ PYTHONPATH,這是正確的,但是當我啓動Python時,我的路徑不會顯示在sys.path中。有任何想法嗎?Python中的tcsh

編輯:

[[email protected] ~]$ 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' 

回答

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 

the variables section of the tcsh documentation有一些更多的信息可用。

1

確保你不將-E選項啓動蟒蛇(即:無視環境變量)。如果你通過shell腳本或其他應用程序啓動python,只需再次檢查它不會添加任何內容。

由於sys.path的列表很長,所以很難錯過你的路徑。在所有的圖書館路徑之後,PYTHONPATH的東西通常被添加到列表的中間。你有什麼機會在那裏,只是埋在中間?

+0

明確不在列表中,我直接調用二進制文件 – daniel 2009-03-05 20:30:50

0

檢查:

  1. PYTHONPATH是在os.environ,
  2. 和設置爲結腸的正確值分隔的路徑列表。

如果是,並且您可以確認您的路徑不在sys.path中,則發現了一個錯誤。

如果它不在os.environ中,那麼你的環境沒有傳遞給Python(可能是另一個bug)。

當然,向我們展示實際的代碼/出口,有人會很快告訴你。

0

我也有同樣的問題,即使我在.cshrc當我用Python的2.5.1設置環境PYTHONPATH正確的,當我切換到Python 2.6.2,它工作正常。看起來這是一個python的bug。