sublime text构建系统不读取path,必须用which/python3或where python获取绝对路径并写死在"cmd"数组中,路径含空格需引号或正斜杠,必加-u参数,未保存文件或后缀不符将导致失败。

Sublime Text 构建系统不读取系统 PATH,这是绝大多数配置失败的根源。它不会自动查找 python3、node 或 go,也不会继承你 shell 中生效的环境变量。所谓“读取系统路径”在 Sublime 的构建系统里根本不存在——你必须提供绝对路径。
which python3 和 where python 是唯一可信来源
你不能凭记忆写 /usr/bin/python3 或 C:\Python312\python.exe,也不能依赖安装向导默认路径。真实路径取决于你的安装方式(Homebrew、pyenv、conda、MSI 安装器、zip 解压等)。
macOS/Linux:打开终端,运行
which python3
输出类似/opt/homebrew/bin/python3或/Users/you/.pyenv/shims/python3Windows:打开 CMD 或 PowerShell,运行
where python(注意不是where python3,Windows 官方安装器注册的是python)
输出类似C:\Users\You\AppData\Local\Programs\Python\Python312\python.exe
如果命令无输出,说明该命令根本不在系统中可用——此时要先解决 Python 安装或环境变量问题,而不是回 Sublime 盲配。
"cmd" 字段必须是数组,且路径不能靠 PATH 解析
写成字符串(如 "cmd": "python3 -u $file")会直接失效;写成带空格的 Windows 路径却不加引号(如 "cmd": ["C:\Program Files\Python312\python.exe", "-u", "$file"])会导致命令被截断,常见现象是构建窗口一闪而过。
正确写法(Windows):
"cmd": ["C:\Program Files\Python312\python.exe", "-u", "$file"]
或用正斜杠(更安全):"cmd": ["C:/Program Files/Python312/python.exe", "-u", "$file"]正确写法(macOS/Linux):
"cmd": ["/opt/homebrew/bin/python3", "-u", "$file"]
即使which python3输出的是软链,也必须填最终解析后的绝对路径(可用readlink -f $(which python3)验证)
-u 参数不可省:它禁用 stdout/stderr 缓冲,否则 print() 不刷新、input() 会卡死。
虚拟环境路径必须单独查,不能复用全局路径
激活环境后,再查解释器路径:
venv(macOS/Linux):
source myenv/bin/activate && which pythonvenv(Windows):
myenv\Scripts\activate.bat && where pythonconda:
conda activate myenv && which python(macOS/Linux)或where python(Windows)
拿到的路径(如 /path/to/myenv/bin/python)才是构建系统该填的。填错就会出现“包已装但 import 报错”——因为 pip install 装到了 venv 里,而构建系统调用的是系统 Python。
$file 变量依赖文件已保存,未命名文件必然失败
$file 展开为磁盘上的绝对路径。如果文件从未保存过(标签页显示 Untitled),$file 就是空字符串,命令变成 python -u "",结果是静默失败或报错。
- 必须先按
Ctrl+S(Windows/Linux)或Cmd+S(macOS)保存文件 - 文件名必须带
.py后缀,否则selector匹配不上,构建系统不会自动激活 - 语法高亮也要设为 Python(右下角显示
Python),可通过View → Syntax → Python手动设置
真正容易被忽略的点是:所有路径必须真实存在、可执行、且与你当前使用的 pip / venv / conda 环境严格对应。差一个字符、少一个 -u、路径指向了错误的 Python,都会导致“看起来配好了,但就是不工作”。











