直接按F5运行Python脚本需先配置launch.json,否则会提示创建该文件;首次F5选“Python File”自动生成配置,其中"module": "runpy"为安全默认,支持传参;若仅需执行不调试,可用Ctrl+F5或右键“Run Python File in Terminal”。

直接按 F5 运行 Python 脚本,但必须先配置 launch.json
VSCode 本身不自带“一键运行”逻辑,F5 触发的是调试器(Debugger),不是简单执行。如果没配 launch.json,会弹窗提示“请创建一个 launch.json 文件”。这时候不能跳过——否则按 F5 没反应,或报错 Cannot find a debug adapter for 'python'。
实操建议:
- 打开任意
.py文件,按F5→ 选Python File(首次会自动生成.vscode/launch.json) - 生成的配置里
"module": "runpy"是安全默认,不推荐改成"module": "python"(后者在某些环境会找不到模块) - 若脚本依赖命令行参数,改
"args"字段,比如"args": ["--input", "data.txt"] - 注意
"console"值:"integratedTerminal"最常用;"internalConsole"已被弃用,VSCode 1.85+ 不再支持
想免配置直接运行?用 Ctrl+F5 或右键「Run Python File in Terminal」
这是真正意义上的“一键运行”,绕过调试器,等价于在终端里敲 python script.py。适合快速验证、无断点、不关心调试的场景。
常见问题:
立即学习“Python免费学习笔记(深入)”;
快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。
- 输出中文乱码?检查终端编码:Windows 默认是
GBK,而 Python 3 用UTF-8。临时解决:在终端里先运行chcp 65001;长期方案:在 VSCode 设置里搜terminal.integrated.defaultProfile.windows,设为PowerShell并确保其$OutputEncoding = [System.Text.Encoding]::UTF8 - 报错
ModuleNotFoundError?说明当前终端工作目录不对。右键菜单运行时,VSCode 默认用文件所在目录为cwd;但如果你在资源管理器里点了其他文件夹再运行,cwd就会变——建议始终在目标.py文件上右键 - 找不到
python命令?确认已安装 Python,并在系统 PATH 中;或者在 VSCode 设置里配置python.defaultInterpreterPath
输出结果卡在终端里看不见?别手动滚动,用 Ctrl+Shift+P → 「Terminal: Scroll to Bottom」
尤其当脚本 print 大量日志、或用了 time.sleep() 后续输出,终端可能没自动滚到底部,导致你以为没输出。
更省事的办法:
- 运行前,在集成终端里按
Ctrl+Shift+P→ 输入Terminal: Toggle Scroll Lock关闭锁屏(图标变成解锁状态),这样新输出自动滚动到底 - 如果输出含 ANSI 颜色(比如
rich或click库),确保终端支持:terminal.integrated.detectLocale设为off可避免 locale 导致颜色失效 - 不想看中间过程?把
print()改成logging.info(),再配合logging.basicConfig(level=logging.INFO, format="%(message)s"),干净不少
为什么有时候输出一闪而过?不是 VSCode 问题,是脚本自己退出太快
典型场景:双击打开 VSCode 的 .py 文件,按 Ctrl+F5,结果终端闪一下就关了。这不是 VSCode 设置问题,而是 Python 进程执行完立即退出,终端窗口随之关闭。
临时解决(仅调试用):
- 脚本末尾加一行
input("Press Enter to exit...") - 或运行时用
python -i script.py(加-i参数进入交互模式),但需手动修改右键菜单行为——更稳妥的做法是:按Ctrl+Shift+P→ 「Python: Run Python File in Terminal」,它默认不加-i,但你可以在设置里搜python.terminal.executeInFileDir确保路径正确,再配合上面的input()
真正该检查的是:你的脚本有没有异常提前退出?比如 sys.exit(0) 写在开头、或 try/except 吞掉了关键错误导致静默失败——这种时候输出“没看到”,其实是根本没走到 print 那行。

















