Sublime Text 默认构建系统不支持交互式输入,因输出面板只读 stdout 而不接管 stdin,导致 input() 报 EOFError 或挂起;推荐安装 SublimeREPL 插件并配置快捷键 F5 运行,或改用外部终端构建系统。

Sublime Text 默认构建系统不支持交互式输入,input() 会卡住、抛出 EOFError 或直接跳过——这不是你代码写错了,是运行环境没配对。
为什么 input() 在 Sublime 里直接失效
Sublime 的默认 Ctrl+B 构建用的是内部输出面板,它只读 stdout,不接管 stdin。一旦执行到 input(),Python 尝试从标准输入读取,但面板没提供输入通道,结果就是程序挂起或报错。
- 常见错误现象:
EOFError: EOF when reading a line或光标静止不动 - 不是 Python 版本问题,Python 2/3 的
input()/raw_input()都一样失效 - 即使脚本逻辑完全正确,只要含交互输入,就无法在默认构建下跑通
用 SublimeREPL 插件启动交互式 REPL 环境
这是最稳定、兼容性最好的方案,尤其适合调试含多次 input() 的脚本(比如菜单选择、表单录入)。
- 按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 回车 → 输入SublimeREPL→ 回车安装 - 安装后,用
Tools → SublimeREPL → Python → RUN current file启动,会新开一个*REPL*[python]标签页,支持完整输入/输出交互 - 注意:必须先激活你要运行的 .py 文件标签页,再触发菜单命令,否则可能运行上一个文件
- 首次运行若提示找不到
python,检查系统 PATH 是否包含 Python 安装路径(如C:\Python39)
配置快捷键一键运行(避免反复点菜单)
把 F5 绑定到 SublimeREPL 的 Python 运行命令,省去鼠标操作。
立即学习“Python免费学习笔记(深入)”;
- 打开
Preferences → Key Bindings – User - 粘贴以下内容(注意是 JSON 数组格式,别覆盖已有快捷键):
[
{
"keys": ["f5"],
"caption": "SublimeREPL: Python - RUN current file",
"command": "run_existing_window_command",
"args": {
"id": "repl_python_run",
"file": "config/Python/Main.sublime-menu"
}
}
]- 保存后,在任意 Python 文件中按
F5即可启动 REPL 并运行当前文件 - 如果快捷键冲突(比如被其他插件占用),可改成
["ctrl+alt+r"]等组合键 - 别漏掉
"file": "config/Python/Main.sublime-menu"—— 缺了这行,命令会静默失败
替代方案:调用外部终端(适合简单脚本)
如果你不想装插件,或只需要一次性输入,可改用系统终端执行。
- 新建构建系统:
Tools → Build System → New Build System - Windows 用户填入(注意路径和引号):
{
"cmd": ["start", "cmd", "/k", "python", "$file"],
"shell": true,
"working_dir": "$file_path",
"encoding": "utf-8"
}- macOS/Linux 用户把
cmd改成:["open", "-a", "Terminal.app", "--wait", "-e", "python3", "$file"] - 保存为
PythonExternal.sublime-build,然后在Build System菜单里选它,按Ctrl+B - 缺点:每次运行都弹新窗口,不能复用;中文输入可能乱码(需确保终端编码为 UTF-8)
真正容易被忽略的是:SublimeREPL 启动后,焦点必须落在 REPL 标签页里才能输入——如果点回源码页再敲键盘,输入会进错地方。另外,某些旧版 SublimeREPL 对 Python 3.12+ 支持不稳定,遇到异常退出时,优先升级插件而非降级 Python。


















