VSCode 运行含 input() 的脚本时无法输入数据,主因是终端未获焦点、Code Runner 输出至只读面板、调试器未启用集成终端,或换行符/编码不匹配;需手动聚焦终端、配置 launch.json 的 "console": "integratedTerminal"、调整编码及环境变量。

VSCode 运行含 input() 的脚本时输不进数据,不是代码问题,而是焦点、终端模式或配置没对上。
终端没获得键盘焦点,敲字没反应
VSCode 默认运行后光标仍留在编辑器里,input() 提示出来了,但输入被完全忽略——因为终端根本没在监听。
- 用鼠标点一下终端面板内部(看到光标闪烁才算成功)
- 更快:按
Ctrl+K(Windows/Linux)或Cmd+K(macOS),一键聚焦终端 - 终端还没开?先按
Ctrl+`唤出它;输完回车后按Ctrl+J可秒切回编辑器 - 如果用了 Code Runner 扩展(
Ctrl+Alt+N),默认把输出打到只读的 Output 面板——必须在设置里勾选code-runner: run in terminal
调试(F5)时 input() 卡死不动
F5 启动调试器时,input() 无提示、不卡报错、也不等输入,本质是 VSCode 调试器默认用了非交互式控制台,stdin 流压根没连上。
- 确认项目根目录下有
.vscode/launch.json,里面必须包含:"console": "integratedTerminal"(强制走集成终端)"justMyCode": false(否则会跳过input()底层调用) - 删掉或注释掉
"console": "internalConsole"——这个值会让输入彻底失效 - 检查
python.defaultInterpreterPath是否指向虚拟环境里的解释器,否则终端可能启动系统 Python,路径和包都错位
输完回车,input() 不返回或返回空字符串
常见于 WSL、远程 SSH 或某些终端模拟器,本质是换行符(\r\n 或 \n)没被 Python 正确识别。
- 在集成终端里运行:
python -c "print(repr(input()))",输入后看输出是否含'\n';若显示'\r\n',说明终端发的是 CRLF,而 Python 某些配置下只认 LF - 在
launch.json的配置项里加:"env": {"PYTHONIOENCODING": "utf-8"},避免中文输入后解码失败阻塞 - 极端情况可临时用
sys.stdin.readline().strip()替代input(),绕过内置缓冲逻辑
最常被忽略的一点:VSCode 的“运行”和“调试”是两套独立机制,launch.json 配置只影响 F5 调试,不影响终端直接执行或 Code Runner。别指望改一个地方就全局生效。


















