import语句之前设定PYTHONPATH(set pythonpath before impor

2019-07-20 14:49发布

我的代码是:

import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

但脚本库是在一些其他的目录,所以我必须包括在环境变量“PYTHONPATH”该目录。

反正在我可以在环境变量“PYTHONPATH” import语句之前,先添加脚本库目录就像得到执行:

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

def foo():
  ... some operations

如果是这样,该值仅适用于命令提示符还是全球性的?

提前致谢

Answer 1:

这将添加到您的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,连接到标准输出,并且将继续在后台运行。 然后,您可以运行python set.py 。 每个人都有一套不同的环境变量。 观察从输出loop.py不会改变,因为set.py不会改变loop.py的环境。

在导入笔记

Python导入是动态的,就像语言的其余部分。 没有静态链接回事。 进口是一个可执行的线,就像sys.path.append...



Answer 2:

正如文档也注意到这里 。
转到Python XX/Lib和这些行添加到site.py那里,

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

这改变了你的sys.path ,使每个负载,它将在它该值..

如前所述这里约site.py

该模块的初始化过程中自动导入。 导入此模块将追加站点特定的路径模块搜索路径并添加一些内建命令。

对于加入一些路径的其他可能的方法sys.path看到这些文档



文章来源: set pythonpath before import statements