vscode中print()不显示的根本原因是输出被重定向至调试控制台、pythonw.exe或output面板等非终端位置。需显式配置launch.json的"console": "integratedterminal",确保python解释器为python.exe而非pythonw.exe,并设置code-runner.runinterminal为true及pythonunbuffered=1以禁用缓冲。

输出根本没去终端,而是进了调试控制台
VSCode 默认用 launch.json 启动调试时,如果没显式配置 "console" 字段,它很可能回退到 "internalConsole" —— 这个“调试控制台”面板对 Python 的 print() 支持极差,输出常被截断或完全不显示。
- 打开项目根目录下的
.vscode/launch.json,确认配置中包含"console": "integratedTerminal" - 不要依赖默认值;哪怕只有一条配置,也必须写明该字段
- 改完保存后重启调试会话(不是仅重启终端),否则旧配置仍生效
Python 解释器被悄悄换成了 pythonw.exe
尤其在 Windows 上用 Anaconda 或某些一键安装包时,VSCode 可能自动选了 pythonw.exe —— 它专为 GUI 程序设计,**静默丢弃所有 print() 输出,连终端都不会出现**,且不报错。
- 按
Ctrl + Shift + P,输入Python: Select Interpreter,看当前路径末尾是不是pythonw.exe - 手动编辑
settings.json,把"python.defaultInterpreterPath"中的pythonw.exe替换成python.exe - 验证:在 VSCode 终端里运行
where python,确保返回的是python.exe路径
Code Runner 插件默认不走终端,也不捕获 print
如果你习惯用 Ctrl+Alt+N 运行代码,那大概率是 Code Runner 在工作。它的默认行为是把输出塞进“输出(Output)”面板,但这个面板不支持交互、不刷新缓冲、且对中文和多行输出极其脆弱。
- 在设置里搜索
code-runner.runInTerminal,把它设为true - 同时关闭
code-runner.preserveFocus,避免焦点卡在编辑器导致终端不自动弹出 - 若仍想用 Output 面板,需额外加配置
"code-runner.terminalRoot"并确保终端编码为 UTF-8,但不如直接切到集成终端可靠
print() 被缓冲,而你没等它刷出来
当 Python 运行在非交互式环境(比如通过调试器或某些插件启动)时,print() 默认启用行缓冲,遇到换行才输出;如果程序结束太快,缓冲区里的内容就丢了。
- 临时加
flush=True:写成print("hello", flush=True) - 更彻底的方案是在
launch.json的配置里加"env": {"PYTHONUNBUFFERED": "1"} - 注意:加了
redirectOutput: true(Python 调试专用)反而可能加剧缓冲问题,除非你明确需要重定向日志
pythonw.exe 黑洞。盯住 launch.json 的 console 字段和解释器路径,比反复检查 print() 本身有用得多。Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











