在import语句之前设置pythonpath

2024-03-29 10:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码是:

import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

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

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

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

def foo():
  ... some operations

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

提前谢谢


Tags: path代码import目录foodefsys环境变量
2条回答

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

套装:

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

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

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

这将更改您的sys.path以便在每次加载时,它都具有该值。。

here关于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添加某些路径的其他可能方法,请参见these docs

相关问题 更多 >