python中环境变量PYTHONPATH作用

PYTHONPATH 是 Python 的一个环境变量,它的主要作用是告诉 Python 解释器去哪里寻找导入的模块和包(即 import 语句要加载的文件)


1. 核心工作原理

当你执行 import my_module 时,Python 会按照一定的顺序去寻找这个文件:

  1. 当前运行脚本的目录
  2. PYTHONPATH 中设置的所有目录(如果设置了的话)。
  3. 标准库目录
  4. 第三方库安装目录(如 site-packages)。

核心作用:如果你自己写了一个工具包,但它既不在你当前运行的项目文件夹下,你又不想用 pip install 安装它,你就可以把它的路径加入到 PYTHONPATH 中,这样 Python 就能在任何地方直接 import 它。


2. 应用场景

场景一:多模块/多项目协同开发

假设你的电脑上有如下的项目结构:

1
2
3
4
5
/Users/username/workspace/
├── shared_tools/ # 存放公共工具包
│ └── utils.py
└── my_project/ # 当前开发的项目
└── main.py

main.py 中,你想直接写 import utils。因为它们不在同一个目录下,Python 默认会报错 ModuleNotFoundError

  • 解决方法:将 /Users/username/workspace/shared_tools 添加到 PYTHONPATH 中。

场景二:避免复杂的相对导入

在大型项目中,深层级的相对导入(如 from ...sub_folder.module import func)非常容易出错。通过把项目的根目录加入 PYTHONPATH,你可以统一使用绝对导入:

1
from my_project.sub_folder.module import func

3. 如何查看和设置 PYTHONPATH

3.1查看当前生效的搜索路径

你可以在 Python 中通过 sys.path 查看 Python 实际会去哪些地方找包(PYTHONPATH 中的路径会被自动加载到 sys.path 中):

1
2
3
import sys
for path in sys.path:
print(path)

3.2设置方法

方法 A:在终端中临时设置(推荐用于测试)

  • Linux / macOS:
1
2
export PYTHONPATH="/path/to/your/folder:$PYTHONPATH"
python main.py
  • Windows (Command Prompt):
1
2
set PYTHONPATH=C:\path\to\your\folder;%PYTHONPATH%
python main.py
  • Windows (PowerShell):
1
2
$env:PYTHONPATH="C:\path\to\your\folder;" + $env:PYTHONPATH
python main.py

方法 B:在代码中动态修改(最灵活)

如果你不想配置系统环境变量,也可以在 Python 代码运行初期直接修改 sys.path

1
2
3
4
5
6
7
8
import sys
import os

# 将指定目录动态加入搜索路径
sys.path.append(os.path.abspath("/path/to/your/folder"))

# 此时就可以正常 import 该目录下的模块了
import my_module