vscode运行含input()的python脚本时输入无响应,主因是焦点未落在终端或未启用集成终端;需按ctrl+`唤出终端、ctrl+k聚焦,调试时在launch.json中设"console": "integratedterminal"并禁用"internalconsole"。

VSCode 运行含 input() 的 Python 脚本时,输入框不响应、输不进字、回车没反应——不是代码写错了,而是焦点没落在终端,或根本没走终端。
终端没聚焦,键盘输入被忽略
VSCode 默认不会自动把光标切到终端。哪怕你看到 请输入用户名: 提示了,敲键盘也没用,因为编辑器或调试控制台还占着焦点。
- 鼠标点一下终端面板内部,确认光标在闪烁
- 快捷键更高效:按
Ctrl+K(Windows/Linux)或Cmd+K(macOS),直接聚焦终端 - 终端还没打开?先按
Ctrl+`唤出来 - 输完回车后想秒切回编辑器?按
Ctrl+J
调试时 input() 卡死不动
F5 启动后程序停在 input() 那行,没提示、不报错、也不等输入——这是调试器默认用了非交互式控制台,stdin 根本没连上。
- 必须在项目根目录的
.vscode/launch.json中加这一项:"console": "integratedTerminal" - 同时设
"justMyCode": false,否则调试器会跳过input()底层调用 - 删掉或注释掉
"console": "internalConsole",这个值会让输入彻底失效 - 如果用了虚拟环境,检查
python.defaultInterpreterPath是否指向 venv 里的解释器,否则终端可能启动系统 Python
args 参数传不进去,sys.argv 拿不到
点右键“Run Python File”或按 Ctrl+F5,launch.json 里的 args 字段完全不生效。它只对 F5 调试起作用。
-
args必须是字符串数组,不能拼在program后面:["--verbose", "--input", "data.txt"]✅;"program": "main.py --input data.txt"❌ - 含空格的值不用额外引号:
["--name", "Alice Smith"]→sys.argv收到的就是['main.py', '--name', 'Alice Smith'] - 参数本身要带引号(比如 JSON)?得双重转义:
["--config", "{\"port\":8080}"] - 想让“Debug Python File”按钮也读
args?加"purpose": ["debug-in-terminal"],且配置名必须是Python: Current File (Integrated Terminal)
Code Runner 扩展里输不了数据
用 Code Runner(Ctrl+Alt+N)运行脚本,提示文字出现在 Output 面板,但那里是只读日志区,根本不能输入。
- 打开设置(
Ctrl+,),搜code-runner: run in terminal,勾选此项 - 顺手关掉
code-runner: preserve focus,避免运行后焦点卡在编辑器 - 改完重启 VSCode 或重载窗口,再运行就能在终端输数据了
最常被忽略的是:args 和 input() 是两套机制,一个走命令行参数解析,一个走终端 stdin 流——混用时别指望 args 能绕过 input() 提示,也别在模块顶层就依赖 args 做文件读取,否则断点都打不到入口逻辑里。











