Build System 必须放在 Packages/User/ 目录下才生效;Sublime Text 仅从该路径加载 .sublime-build 文件,放错位置(如桌面、项目根目录)则菜单中不可见,且需文件名合法、JSON 正确、selector 匹配语法作用域。

Build System 必须放在 Packages/User/ 目录下才能生效
Sublime Text 只从固定路径加载构建系统:Windows/macOS/Linux 都必须把 .sublime-build 文件存到 Packages/User/ 里。用 Preferences → Browse Packages… 打开目录,直接丢进去就行;放错位置(比如桌面、项目文件夹)会导致菜单里根本看不到它。
文件名随意,但后缀必须是 .sublime-build,例如 Python3.sublime-build 或 NodeRunner.sublime-build。保存后重启 Sublime 通常不必要,但若菜单没刷新,可手动点击 Tools → Build System → Refresh Projects。
cmd 数组写法比 shell_cmd 更可靠,尤其含空格路径时
错误写法:"shell_cmd": "python $file" —— 当前文件路径含空格(如 C:\My Scripts\hello.py)会被截断,报 command not found。
正确写法用数组传参:"cmd": ["python", "-u", "$file"]。Sublime 会原样拼接参数,不经过 shell 解析,规避空格和特殊字符问题。
-
-u参数必须加:禁用 Python 输出缓冲,否则print()不立刻显示 -
$file是绝对路径,无需额外处理;$file_path和$file_name可用于更复杂场景(如先cd再运行) - macOS/Linux 若默认
python指向 Python 2,应改用["python3", "-u", "$file"]
selector 不匹配,Ctrl+B 就静默失败
Build System 不是靠文件后缀触发的,而是靠语法高亮模式(syntax)匹配 selector 字段。右下角状态栏没显示 Python 或 JavaScript,哪怕文件是 .py 后缀,Ctrl+B 也不会调用该构建系统。
常见 selector 值:
- Python:
"selector": "source.python" - JavaScript(Node.js):
"selector": "source.js" - Shell 脚本:
"selector": "source.shell" - 通用兜底(慎用):
"selector": "source | text",但可能误触发
确认当前文件语法模式是否正确:右键编辑区 → Set Syntax → Python(或对应语言)。别依赖后缀自动识别。
交互式输入(input())在 Sublime 控制台里根本不可用
Sublime 的输出面板是只读的,不提供 stdin 流。只要脚本里有 input() 或 sys.stdin.read(),执行会卡住,光标不动,也无报错——它就在等你“输入”,但你输不了。
解决办法只有两个:
- 临时删掉或注释掉
input(),仅用于验证逻辑和输出 - 改用外部终端:把
"cmd"改成["cmd", "/c", "start", "cmd", "/k", "python", "-u", "$file"](Windows),或["sh", "-c", "xterm -e 'bash -c \"python3 -u $1; exec bash\" -- \"$1\"'", "-", "$file"](Linux),macOS 类似用open -a Terminal
别指望插件(如 SublimeREPL)能完美替代终端——它本身也有兼容性问题,且 Sublime Text 4 已不再官方支持。
最常被忽略的一点:构建系统生效的前提不是“文件已保存”,而是“语法模式已设对 + 构建系统已选中 + $file 路径可被解释器访问”。三者缺一,Ctrl+B 就只是显示 [Finished] 然后消失。

















