Sublime Text需配置Build System才能运行Python脚本,核心是通过shell_cmd调用系统python3或py命令;Windows推荐py -3,macOS/Linux用python3;input()无法交互属设计限制。

Sublime Text 本身不带 Python 运行环境,得靠 Build System
Sublime Text 是纯编辑器,不是 IDE,它不能直接“运行”Python,而是通过调用系统已安装的 python 或 python3 命令来执行脚本。关键在于配置正确的 Build System——也就是告诉 Sublime:“保存后按 Ctrl+B(Windows/Linux)或 Cmd+B(macOS),该用哪个命令、带什么参数去跑当前文件”。
常见错误现象:按 Ctrl+B 后底部面板一闪而过、没输出、报错 'python' is not recognized 或 command not found: python3,基本都是 Build System 没配对,或系统 PATH 里找不到 Python 可执行文件。
- 先确认终端里能直接运行:
python --version或python3 --version,记下你实际用的是哪个命令 - Windows 用户注意:默认安装的 Python 可能只注册了
py启动器(比如py -3),此时应优先用py -3而非假设存在python3 - macOS 用户若用 Homebrew 安装 Python,通常命令是
python3;若用系统自带(已弃用),python指的是 Python 2.7,别误用 - Linux 用户一般为
python3,但某些发行版(如 Ubuntu 22.04+)可能默认有python指向python3,仍建议显式写python3避免歧义
手动创建 Python3 Build System 文件(推荐)
Sublime 不会自动识别你装了什么 Python,必须手动建一个 .sublime-build 文件。路径固定:Tools → Build System → New Build System…,粘贴以下内容并保存为 Python3.sublime-build(Windows/macOS/Linux 通用写法):
{
"shell_cmd": "python3 -u "$file"",
"file_regex": "^\s*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
"encoding": "utf-8"
}
说明:
-
python3 -u中的-u强制未缓冲输出,避免 print() 卡住不显示 -
"$file"是 Sublime 内置变量,代表当前打开的文件完整路径 -
"file_regex"让点击错误行时能跳转到对应位置,正则必须严格匹配 Python 默认报错格式 - 保存后,在
Tools → Build System下选中Python3,再按Ctrl+B就能运行
Windows 上用 py 启动器更可靠(尤其多 Python 版本时)
如果你装了多个 Python(比如 3.9 和 3.12),或者没把 Python 加进系统 PATH,用 py 启动器比硬写 python3 更稳。它由 Windows Python 官方安装包自带,能自动路由到已注册版本。
新建 Build System,内容改为:
{
"shell_cmd": "py -3 -u "$file"",
"file_regex": "^\s*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
"encoding": "utf-8"
}
注意点:
-
py -3表示“找任意 Python 3.x”,py -3.12可指定小版本 - 这个方式在 Windows 上几乎总比
python3命令靠谱,尤其你用 Microsoft Store 版 Python 时,它根本不往 PATH 写命令 - 不要在 macOS/Linux 上用
py——它不存在,会报错
运行时看不到输入(input() 卡住)?这是正常限制
Sublime 的 Build 系统本质是调用命令行并捕获输出,但它**不提供交互式 stdin 支持**。所以一旦脚本里有 input(),Build 面板会停住、光标不动、无法键入——这不是配置错了,是 Sublime 的设计限制。
解决办法只有两个:
- 改用终端:保存文件后,手动打开系统终端(
cmd/Terminal/gnome-terminal),cd 到文件目录,运行python3 script.py - 临时注释或替换
input(),比如改成name = "test"方便快速验证逻辑
别折腾插件试图“修复”这个——所有基于 Build System 的方案都绕不开 stdin 限制,强行 hack 容易引发编码、路径、权限等问题,得不偿失。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











