sublime text 一键运行 python 本质是配置正确的 build system:必须用绝对路径指定 python 解释器、加 -u 参数禁用缓冲、含 "$file" 动态传入当前文件,且 file_regex 和 selector 需精准匹配错误格式与语法类型,否则 ctrl+b 无输出或不跳转错误。

Sublime Text 本身不运行脚本,它只调用系统命令行执行解释器。所谓“一键配置运行”,本质是写对 Python.sublime-build 文件里的 cmd、file_regex 和 selector 这三项——错一个,Ctrl+B 就没输出、不跳错误、甚至根本不动。
怎么写对 cmd:路径、参数、平台差异全得管
cmd 不是随便填个 python 就行。它必须能被 Sublime 启动的子进程真正执行到:
- 先在终端里确认
python --version或python3 --version能返回结果;不行就说明没进PATH,得写死路径,比如 Windows 上:["C:\Python311\python.exe", "-u", "$file"](注意双反斜杠) -
-u必须加——否则print()输出会卡住,直到脚本结束才刷出来 - macOS/Linux 用户如果用
python3命令,cmd就得写成["python3", "-u", "$file"],不能混用 - 想让脚本在文件所在目录运行(尤其涉及相对路径读写),加上
"working_dir": "$file_path"
file_regex 写错,双击报错行就失效
Sublime 的构建面板靠 file_regex 解析错误位置,从而支持双击跳转。Python 默认报错格式是:
File "demo.py", line 5, in <module></module>
对应正则必须严格匹配,推荐用这个:
"file_regex": "^File "(.+?)", line ([0-9]+)"
- 别漏掉开头的
^,否则可能匹配到中间某行的字符串里 - 括号要转义成
",不然 JSON 解析失败 - Windows 路径含反斜杠时,正则不用特别处理,Sublime 会自动适配
为什么 Ctrl+B 没反应?大概率是 selector 或手动选择没做
即使 .sublime-build 文件内容完全正确,如果当前文件没被识别为 Python,构建系统也不会自动启用:
- 右下角状态栏必须显示
Python(不是Plain Text或空),这靠"selector": "source.python"控制 - 如果新建文件还没保存(.py 扩展名未生效),或语法高亮没设对,Sublime 就不会关联该构建系统
- 最稳做法:先手动点
Tools → Build System → Python选一次,再按 Ctrl+B - 也可以临时用
Tools → Build With…弹出菜单选,绕过自动匹配逻辑
运行时卡住、无输出、input() 失效怎么办
这不是配置错了,而是 Sublime 构建系统的能力边界:
- 输出面板不是伪终端(pty),所以
input()无法输入,会直接抛EOFError - Node.js 或某些 C 扩展脚本若 stdout 不刷新,加
-u无效时,可改用 shell 中转:["sh", "-c", "python -u $file"](macOS/Linux)或["cmd", "/c", "python -u $file"](Windows) - 脚本路径含中文或空格?
$file会被自动加引号,一般没问题;但极少数旧版解释器可能崩,这时改用$file_path/$file_name拆开拼接
真正容易被忽略的是:构建系统一旦保存,修改后必须重启 Sublime 或切换一次构建系统才能重载——改完 JSON 不生效,八成是忘了这步。











