Python 中的 PYTHONPATH 环境变量是什么?


Python 中,PYTHONPATH 是一个环境变量,它指定了一个目录列表,在导入模块时 Python 会搜索这些目录以查找 Python 模块。当您在 Python 中导入模块时,Python 会在 sys.path 中指定的目录中查找该模块,sys.path 是一个目录列表,其中包括当前工作目录和 PYTHONPATH 中指定的目录。

PYTHONPATH 是一个环境变量,您可以将其设置为添加其他目录,Python 将在这些目录中查找模块和包。对于大多数安装,您不应该设置这些变量,因为 Python 运行不需要它们。Python 知道在哪里可以找到其标准库。

设置 PYTHONPATH 的唯一原因是维护您不想安装在全局默认位置(即 site-packages 目录)的自定义 Python 库的目录。

如何使用 PYTHONPATH 的示例 -

在终端中设置 PYTHONPATH

您可以在运行 Python 脚本之前在终端中设置 PYTHONPATH。这是一个示例 -

$ export PYTHONPATH=/path/to/my/modules/
$ python my_script.py

在脚本中设置 PYTHONPATH

您可以使用 os 模块 在 Python 脚本中设置 PYTHONPATH。这是一个示例 -

import os
import sys
sys.path.insert(0, os.path.abspath("/path/to/my/modules/"))

追加到 PYTHONPATH

您可以使用os模块将目录追加到 Python 脚本中的 PYTHONPATH。这是一个示例 -

import os
import sys
sys.path.append(os.path.abspath("/path/to/my/modules/"))

使用 .pth 文件

您可以在包含要添加到 PYTHONPATH 的目录的目录中创建一个 .pth 文件。这是一个示例 -

$ cat /path/to/my/modules/my_modules.pth
$/path/to/my/modules/

使用虚拟环境

当您使用 venvvirtualenv 创建虚拟环境时,它会自动将 PYTHONPATH 设置为包含虚拟环境的 site-packages 目录。这是一个示例 -

$ python -m venv my_virtualenv
$ source my_virtualenv/bin/activate

使用 .env 文件

您可以使用 .env 文件为您的项目设置环境变量,包括 PYTHONPATH。首先,使用以下命令安装 python-dotenv

pip install python-dotenv

然后,在项目的根目录中创建一个 .env 文件,并添加以下行以设置 PYTHONPATH -

PYTHONPATH=/path/to/my/modules/

最后,在您的 Python 脚本中从 .env 文件加载环境变量 -

from dotenv import load_dotenv
import os
load_dotenv()
sys.path.insert(0, os.getenv("PYTHONPATH"))

使用包目录结构

您可以创建一个包目录结构,其中每个子目录代表一个包,并且这些子目录会自动添加到 PYTHONPATH 中。这是一个示例

import my_package.my_module

并像这样导入 my_submodule

import my_package.my_subpackage.my_submodule

PYTHONPATH 是一个环境变量,它指定了一个目录列表,在导入模块时 Python 会搜索这些目录以查找 Python 模块。当您有不想安装在全局默认位置的自定义 Python 库时,这很有用。有几种方法可以设置 PYTHONPATH,包括在终端中设置它,使用 os 模块在 Python 脚本中设置它,使用 os 模块追加到它,使用 .pth 文件,使用虚拟环境以及使用 .env 文件。通过有效地使用 PYTHONPATH,您可以更有效地组织 Python 代码并使其更易于维护。

总之,这些是使用 PYTHONPATH 指定要搜索 Python 模块的目录的一些方法。您选择的方法取决于您的需求和偏好,但使用虚拟环境或包目录结构是常用的方法。

更新于: 2023年8月26日

39K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告