73

我的代码是:

import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

但 scriptlib 位于其他目录中,因此我必须将该目录包含在环境变量“PYTHONPATH”中。

无论如何,我可以先在环境变量“PYTHONPATH”中添加scriptlib目录,然后再执行导入语句,如下所示:

import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

如果是这样,该值仅适用于该命令提示符还是 global ?

提前致谢

4

2 回答 2

78

这将为您的 Python 进程/实例(即正在运行的可执行文件)添加一个路径。不会为任何其他 Python 进程修改路径。另一个正在运行的 Python 程序不会修改其路径,如果您退出程序并再次运行,该路径将不会包含您之前添加的内容。你在做什么通常是正确的。

设置.py:

import sys
sys.path.append("/tmp/TEST")

循环.py

import sys
import time
while True:
  print sys.path
  time.sleep(1)

跑:python loop.py &

这将运行 loop.py,连接到您的 STDOUT,并将继续在后台运行。然后就可以运行了python set.py。每个都有一组不同的环境变量。观察到输出loop.py没有改变,因为set.py没有改变loop.py的环境。

进口注意事项

Python 导入是动态的,就像该语言的其他部分一样。没有进行静态链接。导入是一个可执行行,就像sys.path.append....

于 2013-02-27T10:24:43.793 回答
7

正如此处的文档中所述。

转到Python X.Y/Lib(Windows) 或/usr/lib/pythonX.Y(Linux) 并将这些行添加到site.py那里,

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

这会改变您sys.path,以便在每次加载时,它都会具有该值..

如此所述,site.py

该模块在初始化期间自动导入。导入此模块会将特定于站点的路径附加到模块搜索路径并添加一些内置函数。

有关添加一些路径以sys.path查看这些文档的其他可能方法

于 2013-02-27T10:36:07.707 回答