在import语句之前设置pythonpath

时间:2013-02-27 10:20:21

标签: python path pythonpath

我的代码是:

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

如果是,那么该值是仅用于该命令提示符还是全局?

提前致谢

2 个答案:

答案 0 :(得分:50)

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

set.py:

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

loop.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...

答案 1 :(得分:6)

正如文档here中所述 转到Python X.X/Lib并将这些行添加到site.py那里,

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

这会更改您的sys.path,以便在每次加载时,它都会包含该值..

here所述site.py

  

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

有关向sys.path添加某些路径的其他可能方法,请参阅these docs