sublime text 的 build system 必须置于 packages/user/ 目录、用合法 json 编写,关键字段如 cmd(数组格式)、selector(如 "source.python")不可缺失或错误,否则 ctrl+b 静默失败;windows 路径需双反斜杠加引号,macos/linux 依赖 which python3;quiet: false 和 show console 是调试关键。

Sublime Text 的 Build System 不是“写完就用”,它必须放在 Packages/User/ 目录下、用合法 JSON 写、且关键字段一个都不能错,否则 Ctrl+B 会静默失败或报“command not found”。
Build System 文件必须放对位置才能被识别
Sublime 只从两个地方加载构建系统:内置只读包(你改不了),和 Packages/User/。丢在桌面、项目根目录、甚至 Packages/ 下其他子文件夹里,都不会出现在 Tools → Build System 菜单中。
- 用
Preferences → Browse Packages…打开目录,直接进User/子文件夹 - 新建文件,命名为类似
Python3.sublime-build,后缀必须是.sublime-build - 保存后,如果没立刻出现,试试
Tools → Build System → Refresh Projects(部分版本需要)
cmd 字段必须是数组,Windows 路径必须加引号+双反斜杠
写成字符串(如 "cmd": "python -u $file")会完全失效;Windows 下路径含空格(比如 C:Program FilesPython312python.exe)不加引号就直接崩。
- 正确写法(Windows):
"cmd": ["C:\Program Files\Python312\python.exe", "-u", "$file"] - 正确写法(macOS/Linux):
"cmd": ["python3", "-u", "$file"](前提是which python3能查到) - 别依赖
PATH:从开始菜单启动的 Sublime 和终端里subl .启动的,继承的环境变量可能不同;绝对路径最稳 - 不确定解释器在哪?终端运行
which python3(macOS/Linux)或where python(Windows CMD)
selector 决定构建系统是否自动激活
没设 selector,或者写错了(比如写成 python 而不是 source.python),Ctrl+B 就不会触发这个构建系统——哪怕它显示在菜单里。
- Python 文件对应
"selector": "source.python" - 想让它对所有文本文件生效(“万能运行”),可用
"selector": "source | text",但需配合 shell 脚本判断后缀 - 多个构建系统共存时,
selector是唯一区分依据;不能靠if判断同一文件内不同后缀 - 检查当前文件的 scope:按
Ctrl+Shift+P→ 输入show scope回车,看输出里有没有匹配的source.python
调试时别跳过 quiet 和 shell_cmd
默认 quiet: true 会隐藏完整命令和错误,导致你只能看到“[Finished in 0.1s]”却不知道哪错了。
- 临时加
"quiet": false,控制台会打出完整执行命令和 stderr 输出 - 需要重定向、管道或条件逻辑?改用
"shell_cmd"字段(字符串格式),但注意:它只在 shell 环境生效,Windows 需额外加"shell": true -
"args"和"cmd"互斥,不能同时存在;传参要用"args": ["-m", "http.server", "8000"] - 变量如
$file只在cmd或shell_cmd中展开;未保存的Untitled标签页会导致$file为空,命令变成python -u "",直接失败
真正卡住人的往往不是语法,而是 Sublime 启动时实际加载的 PATH、工作目录、以及 selector 匹配 scope 的隐式行为——这些不会报错,只能靠 View → Show Console 里的日志一点点比对。











