ctrl+b没反应需先确认终端能调用python或python3;sublime不自带python,必须用绝对路径配置build system、加-u参数、手动启用对应构建系统。

Ctrl+B 没反应?先确认终端能调用 python 或 python3
Sublime Text 不自带 Python,它只调用你系统里已安装的解释器。如果终端里 python --version 和 python3 --version 都报“命令未找到”,那 Sublime 肯定也找不到——配什么 build system 都白搭。
Windows 用户尤其要注意:安装 Python 时没勾选 Add Python to PATH,就等于没装进系统路径;macOS/Linux 用户常见情况是只有 python3 可用,python 命令根本不存在。
- 打开终端(macOS/Linux)或 PowerShell(Windows),执行
python --version - 失败就试
python3 --version - 哪个能返回版本号(比如
Python 3.11.9),后面 build system 就必须用哪个命令,一个字母都不能错
Build System 必须用绝对路径,不能依赖 PATH
Sublime 启动时不继承 shell 的 PATH 环境变量,尤其是 Windows 上的 Microsoft Store 版 Python、pyenv 管理的版本,或者 macOS 上通过 Homebrew 安装的 Python,python3 命令在终端能用,但在 Sublime 里大概率失效。
正确做法是拿到解释器的绝对路径,硬编码进 build system:
- macOS/Linux:运行
which python3,得到类似/opt/homebrew/bin/python3 - Windows:运行
py -3 -c "import sys; print(sys.executable)",得到类似C:/Users/xxx/AppData/Local/Programs/Python/Python311/python.exe - 配置中写
"cmd": ["<code>C:/Users/xxx/AppData/Local/Programs/Python/Python311/python.exe", "-u", "$file"],路径用正斜杠或双反斜杠都行,但不能含~或环境变量
必须加 -u 参数,否则 print 和 input 会出问题
Python 默认启用 stdout 缓冲,print() 输出可能卡住不显示,input() 则直接抛 EOFError ——这不是代码错,是构建系统漏了 -u(unbuffered)。
这个参数要放在解释器路径之后、$file 之前,且必须和解释器在同一级数组里:
- ✅ 正确:
"cmd": ["<code>/usr/bin/python3", "-u", "$file"] - ❌ 错误:
"cmd": ["<code>/usr/bin/python3", "$file"](没 -u) - ❌ 错误:
"shell_cmd": "python3 $file"(没 -u,且 shell_cmd 不支持交互式 stdin)
Windows 用户可额外加 "env": {"PYTHONIOENCODING": "utf-8"} 避免中文输出乱码,但 -u 是底线。
保存命名和手动启用缺一不可
新建 build system 后,文件名必须是 Python.sublime-build(不是 .json,不是 python3.sublime-build,除非你明确想区分版本),且默认保存位置是 Packages/User/ 目录(可通过 Preferences → Browse Packages 进入验证)。
更关键的是:保存后,必须手动在菜单 Tools → Build System 中点击选择它——右下角状态栏出现 “Python” 才算生效。否则 Ctrl+B 仍走默认构建系统(可能是 JavaScript 或空配置),静默失败。
容易被忽略的点:如果项目用了虚拟环境,得进环境执行 which python 拿真实路径,填进去;不同项目用不同解释器,就建多个 Python - myproject.sublime-build 文件,别指望“激活环境再开 Sublime”能生效。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











