先看终端面板而不是output面板;vscode默认将print()和console.log()输出到集成终端,而非output面板,后者仅显示插件日志等后台信息;务必检查launch.json中console字段设为"integratedterminal",并避免使用pythonw.exe及stdout缓冲导致的静默丢弃。

输出去哪了?先看终端面板而不是Output面板
VSCode里“没输出”,90%是因为你正盯着“输出(Output)”面板,而实际输出早就在下方的“终端(Terminal)”里刷出来了。Python扩展、Node.js调试器、C++编译后运行,默认都走集成终端,不是Output面板——后者只收插件日志、语言服务器状态这类后台信息,不承载你的print()或console.log()。
操作上:运行代码后,直接点底部面板的Terminal标签页;如果没看到,按 Ctrl+`(反引号)唤出终端,再找对应会话。别在Output面板下拉菜单里翻“Python”或“Tasks”,那不是你的程序输出通道。
launch.json里console字段必须显式设为integratedTerminal
如果你用F5调试,launch.json里的console字段没配,VSCode可能回退到internalConsole,而它对Python/Go/C的标准输出兼容性差,print()或std::cout会静默丢弃。
-
"console": "integratedTerminal":输出进终端,支持输入交互,推荐绝大多数场景 -
"console": "internalConsole":输出进调试控制台,但缓冲行为不可控,尤其Python易卡住 -
"console": "externalTerminal":弹系统新窗口,调试器无法捕获输入,仅适合特殊需求
检查.vscode/launch.json,确保配置包含这一行,不要依赖默认值。
Python用户特别防pythonw.exe陷阱
Windows下Anaconda或某些安装包会把pythonw.exe设为默认解释器路径,它天生无控制台窗口,所有print()输出直接消失,连终端都不出现。
打开设置 → 搜索python.defaultInterpreterPath → 点击Edit in settings.json → 把路径里pythonw.exe改成python.exe → 重启VSCode。
验证方法:在集成终端里运行where python,确认返回的是python.exe而非pythonw.exe。
stdout缓冲导致“输出延迟”或“只显示开头”
Python在非TTY环境(比如VSCode某些启动方式)会启用全缓冲,print()内容卡在内存里不往下推,看起来像没输出。现象是:程序跑完才刷出全部日志,或只显示前几行。
- 加
-u参数:在launch.json的args里加"-u",或终端手动跑python -u script.py - 设环境变量:
"env": {"PYTHONUNBUFFERED": "1"},效果等同-u - 终端滚动缓冲区太小:改
settings.json中"terminal.integrated.scrollback": 5000,改完要关掉所有终端标签页重开才生效
缓冲问题最常被当成“代码没执行”,其实程序跑完了,只是日志没透出来——加个input("press")卡住,就能验证是不是缓冲在作怪。











