在 Python 脚本中,如何设置 PYTHONPATH?

我知道如何在/etc/profile 和环境变量中设置它。

但如果我想在剧本中设置它呢? 是进口操作系统吗,系统,我怎么做?

186836 次浏览

您不设置 PYTHONPATH,而是将条目添加到 sys.path。这是一个应该搜索 Python 包的目录列表,因此您可以将目录添加到该列表中。

sys.path.append('/path/to/whatever')

实际上,sys.path是通过分割路径分隔符上的 PYTHONPATH值来初始化的(类 Linux 系统上的 :,Windows 上的 ;)。

还可以使用 site.addsitedir添加目录,该方法还将考虑传递的目录中存在的 .pth文件。(在 PYTHONPATH中指定的目录不是这种情况。)

您可以通过 os.environ获取和设置环境变量:

import os
user_home = os.environ["HOME"]


os.environ["PYTHONPATH"] = "..."

但是由于您的解释器已经在运行,所以这样做不会有任何效果

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

这是解释器启动时将转换为 PYTHONPATH的数组。

PYTHONPATH 以 Sys.path结束,您可以在运行时修改它。

import sys
sys.path += ["whatever"]

如果你把 sys.path.append('dir/to/path')没有检查它已经被添加,你可以在 sys.path中生成一个长列表。为此,我建议这样做:

import sys
import os # if you want this directory


try:
sys.path.index('/dir/path') # Or os.getcwd() for this directory
except ValueError:
sys.path.append('/dir/path') # Or os.getcwd() for this directory

您可以通过 os.environ['PATHPYTHON']=/some/path设置 PYTHONPATH,然后需要调用 os.system('python')来重新启动 python shell 以使新添加的路径有效。

我在 linux 上也可以这样做:

import sys
sys.path.extend(["/path/to/dotpy/file/"])