sublime构建系统需为变量加双引号、设"quiet":false并确认syntax为source.python。中文路径下不加引号会导致参数分割错误;quiet为true会隐藏stderr;selector不匹配则构建不触发。

构建系统里 $file 变量没加引号就崩了
Windows 的 cmd /c 遇到含中文或空格的路径,不加引号就直接按空格切分参数。比如 $file 展开成 C:\用户\test.py,shell 会当成两个独立参数:C:\用户\ 和 test.py,结果报错 'C:\用户\' is not recognized。
-
shell_cmd中所有变量必须用英文双引号包裹:"python -u "$file"",不是"python -u $file" - 别用
"cmd": ["python", "-u", "$file"]这种数组写法——它绕过 shell 解析,在 Windows 下对中文路径完全失效 -
$file_path、$file_base_name同理,只要参与拼接命令,就得套双引号
quiet 设为 true 导致错误被吞掉
默认 "quiet": true 会让 Sublime 直接丢弃 stderr 输出,build output 面板一片空白,你以为没执行,其实是报错了但你看不见。
- 必须显式设为
"quiet": false,否则FileNotFoundError或编码错误全被静默吃掉 - 同时加上
"encoding": "utf-8",避免中文路径在解码阶段出问题 - 按
Ctrl+Shift+B强制聚焦 build output 面板,才能看到真实报错
构建系统根本没匹配上当前文件
即使配置全对,如果 syntax scope 不是 source.python,Sublime 就不会触发你写的 Python 构建系统——它压根不认这个文件该走哪条构建流程。
- 按
Ctrl+Shift+P→ 输入Set Syntax: Python,确认右下角显示 “Python” 而非 “Plain Text” - 检查控制台(
Ctrl+`)是否有error: Unable to find target,这是典型的 selector 匹配失败 - 构建系统里的
"selector"字段必须和当前文件的 scope 完全一致,比如"selector": "source.python"
中文路径下 build output 面板为空?先验证是否真执行了
面板没输出 ≠ 没运行。很可能命令执行了、崩溃了、弹了个黑窗口又瞬间关闭——你根本没机会看到。
- 临时把
shell_cmd改成:"python -c "print('build test')",如果面板输出build test,说明构建系统本身加载成功 - 如果连这行都不输出,回头检查
.sublime-build文件语法是否合法(JSON 格式,逗号不能多也不能少) - 确保文件保存了,且没被其他插件(比如某些自动保存插件)干扰构建触发时机
$file、一行被忽略的 "quiet": false,或者 syntax 没手动设对——这些细节不逐项核对,光换汉化包或重装 Sublime 都没用。











