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

Posted

技术标签:

【中文标题】在 Python 脚本中,如何设置 PYTHONPATH?【英文标题】:In Python script, how do I set PYTHONPATH? 【发布时间】:2011-03-07 16:51:01 【问题描述】:

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

但是如果我想在脚本中设置它怎么办? 是导入操作系统,系统吗?我该怎么做?

【问题讨论】:

【参考方案1】:

您没有设置PYTHONPATH,而是将条目添加到sys.path。它是一个应搜索 Python 包的目录列表,因此您只需将目录附加到该列表即可。

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

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

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

【讨论】:

这个答案发布已经有很多年了,但我仍然想补充一点,如果你想确保 Python 在导入时检查新目录之前的所有其他目录,你应该把新目录在列表的首位,如sys.path.insert(0, '/path/to/whatever')【参考方案2】:

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

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

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

但是由于您的解释器已经在运行,这将不起作用。你最好使用

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

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

【讨论】:

【参考方案3】:

PYTHONPATH 以 sys.path 结尾,您可以在运行时对其进行修改。

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

【讨论】:

有理由更喜欢这个答案而不是@DavidZ 的答案吗? 如果没有别的,那就不那么冗长了。【参考方案4】:

如果您输入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

【讨论】:

不错。非常 Pythonic。 如何清空 PythonPath?我不想追加。我想清空它,把我只想要的东西放进去。有没有办法做到这一点? 您是否尝试通过调用 sys.path.__init__() 重新初始化它?这应该是空的 python 路径。希望这会有所帮助。 @francisco-manuel-garca-botella 本网站非常欢迎回答老问题!没什么好遗憾的。 我不同意这是 pythonic,我认为这不是一个好的编程方法。当异常发生时,异常处理是非常昂贵的,所以你不想用它来替换很可能使用 else 的“if”语句。一个简单的 if 'mypath' in sys.path ... else ... 将是我的建议。【参考方案5】:

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

【讨论】:

os.system() 不会“重新启动 python shell”,它会启动一个新的交互式 Python 实例。当你从那里返回时,你又回到了调用脚本中。【参考方案6】:

我在 linux 下也可以:

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

【讨论】:

extend 与路径一起用作列表中的单个元素与将append 与实际路径本身一起使用没有什么不同。这个答案没有提供比当前接受的答案更多的用处。

以上是关于在 Python 脚本中,如何设置 PYTHONPATH?的主要内容,如果未能解决你的问题,请参考以下文章

Python p12 到 pem

pythonp爬虫 爬取百度音乐

Python 基础语法,这样理解

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

如何在 Notepad++ 的 Python 脚本中将变量设置为正则表达式字符串?

python如何设置按键松开