2010-06-24 102 views

回答

128

您不設置PYTHONPATH,您將條目添加到sys.path。這是一個應該搜索Python包的目錄列表,所以你可以將你的目錄追加到列表中。

sys.path.append('/path/to/whatever') 

事實上,sys.path通過在路徑分隔符(:在類Linux系統,;在Windows上)分裂的PYTHONPATH值初始化。

您還可以使用site.addsitedir添加目錄,並且該方法還會考慮您傳遞的目錄中存在的.pth文件。 (這不會與你的目錄中PYTHONPATH指定的情況下)。

+3

這個答案發布已經很多年了,但我仍然想補充一點,如果你想確保Python在導入之前檢查新目錄,你應該把新目錄放在第一個列表,如'sys.path.insert(0,'/ path/to/whatever')'。 – wecsam 2017-06-15 16:22:40

25

您可以通過os.environ獲取和設置環境變量:

import os 
user_home = os.environ["HOME"] 

os.environ["PYTHONPATH"] = "..." 

但你的解釋已經運行,這不會有任何效果。你最好使用

import sys 
sys.path.append("...") 

這是數組,你PYTHONPATH將轉化爲對翻譯的啓動。

4

PYTHONPATH以sys.path結尾,您可以在運行時修改它。

import sys 
sys.path += ["whatever"] 
+0

有沒有理由比@DavidZ更喜歡這個答案? – Dror 2014-09-08 07:48:03

9

對不起,重新討論這個問題,但我認爲它可以幫助別人:

如果你把sys.path.append('dir/to/path')沒有檢查它已添加,可以產生sys.path一個長長的清單。爲此,我推薦:

import sys 
import os # if you want this directory 

try: 
    sys.path.index('/dir/path') # Or os.getcwd() for this directory 
except ValueError: 
    sys.path.append('/dir/path') # Or os.getcwd() for this directory 

對不起,如果我惹惱某人重新開放問題。

+0

不錯。非常Pythonic。 – PartialOrder 2017-07-17 19:00:24

0

你可以設置PYTHONPATH,通過os.environ['PATHPYTHON']=/some/path,那麼你需要調用os.system('python')來重新啓動python shell來使新添加的路徑生效。