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

162 投票
6 回答
225284 浏览
提问于 2025-04-16 00:22

我知道怎么在我的 /etc/profile 文件和环境变量里设置它。

但是如果我想在一个脚本里设置它呢?我需要用到 import os, sys 吗?我该怎么做呢?

6 个回答

28

如果你直接使用 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
56

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

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

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

但是因为你的解释器已经在运行了,这样做不会有任何效果。你最好使用

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

这个数组就是你的 PYTHONPATH 在解释器启动时会变成的样子。

266

你不需要设置 PYTHONPATH,而是要把你的目录添加到 sys.path 里。这个 sys.path 是一个目录列表,Python会在这些目录里寻找你需要的包,所以你只需要把你的目录加到这个列表里就行了。

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

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

你也可以使用 site.addsitedir 来添加目录,这个方法还会考虑你传入的目录里是否有 .pth 文件。(而如果你直接在 PYTHONPATH 里指定目录,就不会有这个效果。)

撰写回答