Sublime Text的Build System中PYTHONPATH只在构建进程内生效,需在"env"键下配置,用分号隔开路径,避免JSON语法错误和未重载配置。

Build System里PYTHONPATH不生效?先确认变量作用域
Sublime Text的Build System中设置的环境变量(如PYTHONPATH、PATH)**只在构建进程内生效**,不影响编辑器本身或终端,也不继承系统shell的环境。常见现象是:命令行能跑通的Python脚本,在Sublime里ImportError报找不到包——大概率是PYTHONPATH没被Build System正确加载。
- 环境变量必须写在Build System文件的
"env"键下,不能放在"cmd"里拼接 - 路径用正斜杠
/或双反斜杠\,单反斜杠在JSON里会引发解析错误 - Windows下若Python安装在
C:Users ameAppDataLocalProgramsPythonPython311,建议用绝对路径,避免依赖%USERPROFILE%等shell变量(Sublime不展开)
Windows下配置python.exe路径和PYTHONPATH的典型写法
新建Tools → Build System → New Build System...,粘贴以下内容并保存为PythonWithDeps.sublime-build:
{
"cmd": ["python", "-u", "$file"],
"file_regex": "^\s*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
"env": {
"PYTHONPATH": "D:/myproject/libs;D:/shared/utils",
"PATH": "C:\Users\name\AppData\Local\Programs\Python\Python311;C:\Users\name\AppData\Local\Programs\Python\Python311\Scripts;$PATH"
}
}
注意:$PATH要显式拼在"PATH"值末尾,否则会覆盖系统PATH;多个PYTHONPATH目录用分号;隔开(Windows)或冒号:(macOS/Linux)。
macOS/Linux用户遇到ModuleNotFoundError时优先检查shell集成
Sublime默认不读取~/.zshrc或~/.bash_profile里的export PYTHONPATH=...。直接在Build System里硬编码更可靠:
- 用
which python3确认解释器路径,填入"cmd"(例如["/opt/homebrew/bin/python3", "-u", "$file"]) -
PYTHONPATH值中避免使用~,改用/Users/username/... - 如果依赖虚拟环境,把
venv/bin加进PATH,同时确保python指向该venv下的解释器(不要只改PYTHONPATH)
调试环境变量是否生效:用print(os.environ)快速验证
在待构建的Python文件开头加一行:
import os; print("PYTHONPATH =", os.environ.get('PYTHONPATH', 'NOT SET'))
运行Build后看控制台输出。如果显示NOT SET,说明"env"字段未被加载——常见原因有:
- Build System文件名不是
.sublime-build后缀 - JSON语法错误(比如末尾多逗号、中文引号、注释)
- 当前文件没有触发对应
"selector"(例如文件没保存、后缀不是.py、或没设置View → Syntax → Python)
真正容易被忽略的是:Sublime不会自动重载修改后的Build System文件,改完必须重启Sublime或手动执行Tools → Build System → [你的系统名]重新选中一次。

















