2010-06-24 70 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来使新添加的路径生效。