Sublime Text运行Python没输出,大概率是Build System未选对或Python路径配置错误;需先验证终端中python3是否可用,再创建含绝对路径和-u参数的自定义Build System,并用sys.executable确认解释器实际调用路径。

Sublime Text运行Python没输出,大概率是Build System没选对或路径不对
直接现象是:Ctrl+B后光标闪一下就停了,控制台空空如也,连print()都不显示。这不是代码问题,而是Sublime根本没调起Python解释器——它可能在找python,但你系统里只有python3;或者路径指向了不存在的exe;甚至根本没配置Build System。
- Windows用户常见情况:安装了Python但没勾选「Add Python to PATH」,导致命令行能运行
python,而Sublime的Build System找不到 - macOS/Linux用户常见情况:
python命令默认指向Python 2(已废弃),而你的脚本用的是print("hello")这种Python 3语法,执行时静默失败 - Sublime默认的
PythonBuild(Tools → Build System → Python)只认python命令,不自动适配python3或自定义路径
手动创建一个可靠的Python3 Build System(Windows/macOS/Linux通用)
别改默认的Python.sublime-build,新建一个专属配置更安全、可复用。路径必须写绝对路径或用$PATH环境变量,不能依赖当前终端状态。
- 菜单栏选择 Tools → Build System → New Build System…
- 清空默认内容,粘贴以下JSON(注意
cmd字段要匹配你的实际Python路径):
{
"shell_cmd": "python3 -u "$file"",
"file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
"encoding": "utf-8",
"variants":
[
{
"name": "Run in Terminal",
"shell_cmd": "open -a Terminal.app '$file_path' & python3 -u '$file_basename'"
}
]
}
⚠️ 关键点:-u参数强制Python不缓冲输出,否则print()可能卡住不显示;"$file"必须用双引号包裹,防止路径含空格时报错;macOS上Run in Terminal变体仅适用于macOS,Windows请删掉整个variants块并把shell_cmd改成start cmd /c python3 -u "$file" & pause。
怎么确认Sublime读到的Python路径到底对不对?
最直接的办法不是猜,而是让Sublime自己“说”出来。建一个临时文件,写两行:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
立即学习“Python免费学习笔记(深入)”;
import sys print(sys.executable)
保存为test_path.py,用你刚配好的Build System运行它。输出类似/usr/local/bin/python3或C:\Users\xxx\AppData\Local\Programs\Python\Python311\python.exe就说明路径通了;如果报'python3' is not recognized或command not found,说明shell_cmd里的命令名错了,或者该命令根本不在$PATH中。
- Windows下检查:打开CMD,输入
where python3,看返回路径是否和Build里一致 - macOS/Linux下检查:终端执行
which python3,结果应与Build中shell_cmd开头一致 - 如果
which python3无输出,说明Python 3没装或没加进$PATH,得先解决环境问题,再回头配Sublime
为什么有时候Build成功但输出一闪而逝?
这是Sublime默认行为:子进程结束后,输出面板自动关闭。尤其Windows下用cmd跑完就退出,根本来不及看。解决方案不是靠眼疾手快截图,而是让终端停留住。
- Windows:把
shell_cmd改成cmd /c python3 -u "$file" & pause,最后pause会等你按任意键 - macOS:上面示例里的
Run in Terminal变体就是干这个的——它用系统终端单独开窗口运行,自然不会闪退 - 更稳妥的做法:在脚本末尾加
input("Press Enter to continue..."),比依赖Shell命令更跨平台
真正麻烦的从来不是配路径,而是误以为“没输出=代码错了”,结果在逻辑里反复排查,其实解释器压根没启动。确认sys.executable能打出来,才是调试的第一步。

















