在导入语句之前设置PYTHONPATH
我的代码是:
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
但是脚本库(scriptlib)在其他目录里,所以我需要把那个目录加到环境变量“PYTHONPATH”里。
有没有办法让我在执行导入语句之前,先把脚本库的目录加到环境变量“PYTHONPATH”里,比如说:
import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
如果可以的话,这个值是仅对当前命令提示符有效,还是全局有效呢?
2 个回答
90
这段话的意思是,你在运行的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
而改变,因为set.py
并没有改变loop.py
的环境。
关于导入的说明
Python的导入是动态的,就像这个语言的其他部分一样。没有静态链接的概念。导入就像执行一行代码,比如sys.path.append...
。