关于python:在import语句之前设置pythonpath

set pythonpath before import statements

我的代码是:

1
2
3
4
5
import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

但是scriptlib在其他目录中,所以我必须将该目录包含在环境变量"pythonpath"中。

在执行import语句之前,是否可以先在环境变量"pythonpath"中添加scriptlib目录,如下所示:

1
2
3
4
5
6
7
import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

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

提前谢谢


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

PY:

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

1
2
3
4
5
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...一样。


如本文文档中所述。去Python X.X/Lib把这些线加到site.py那里,

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

这将更改您的sys.path,以便在每个负载上都具有该值。

如本文关于site.py所述,

This module is automatically imported during initialization. Importing this module will append site-specific paths to the module search path and add a few builtins.

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