Sublime Text 3中Python的input函数无法终止问题求助
解决Sublime Text 3中Python input函数无法终止的问题
嘿,我之前也踩过这个坑!这其实是Sublime Text自带的构建系统不支持交互式输入导致的——它的输出面板只能显示内容,没法接收你的实时输入,所以你敲回车后看起来光标换行了,但程序其实还在傻等输入呢。给你几个实用的解决办法:
方法一:用SublimeREPL插件(最推荐)
这是专门为交互式编程设计的插件,完美适配Python的input、print交互:
- 先安装插件:按下
Ctrl+Shift+P调出命令面板,输入Install Package回车,然后搜索SublimeREPL安装 - 运行脚本:打开你的Python文件,点击顶部菜单栏的
Tools > SublimeREPL > Python > Python - RUN current file,这时会弹出一个新的交互式窗口,在这里输入内容回车后,程序就能正常响应了 - (进阶)设置快捷键:打开
Preferences > Key Bindings,在右侧用户配置里添加这段代码,以后按Ctrl+Shift+B就能直接用REPL运行当前文件:
{"keys": ["ctrl+shift+b"], "command": "repl_open", "args": {"cmd": ["python", "-u", "$file_basename"], "cwd": "$file_path", "syntax": "Packages/Python/Python.tmLanguage", "external_id": "python"}}
方法二:修改构建系统,让脚本在系统终端运行
把脚本放到系统自带的终端里运行,就能完全支持交互式操作:
- 点击
Tools > Build System > New Build System,把默认内容替换成下面的代码(根据你的系统调整):- Windows系统:
{ "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": {"PYTHONIOENCODING": "utf-8"}, "variants": [ { "name": "Run in Terminal", "cmd": ["cmd.exe", "/c", "start", "python", "-u", "\"$file\""] } ] }- Mac系统:
{ "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": {"PYTHONIOENCODING": "utf-8"}, "variants": [ { "name": "Run in Terminal", "cmd": ["open", "-a", "Terminal.app", "python", "-u", "\"$file\""] } ] }- Linux系统:
{ "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": {"PYTHONIOENCODING": "utf-8"}, "variants": [ { "name": "Run in Terminal", "cmd": ["gnome-terminal", "-e", "python -u \"$file\""] } ] } - 保存文件为
Python.sublime-build(注意不要改后缀),然后在Tools > Build System里选中这个新的构建系统,按下Ctrl+Shift+B选择Python - Run in Terminal,脚本就会在系统终端里打开,输入内容后回车就能正常执行了。
方法三:临时用文件模拟输入(适合快速测试)
如果只是临时测试脚本,不想折腾插件或构建系统,可以把要输入的内容写到文件里:
- 在脚本同目录下创建一个
input.txt,把要输入的内容写进去 - 在Python脚本开头添加这段代码:
import sys sys.stdin = open('input.txt', 'r')
- 按下
Ctrl+B运行脚本,程序会自动读取input.txt里的内容,就不用手动输入了。不过这个方法只能固定输入,适合测试时用,不如前两个灵活。
内容的提问来源于stack exchange,提问作者user85218
相关产品推荐
相关产品推荐

