vscode调试flask断点不触发的直接原因是使用"program": "app.py"启动,导致绕过flask cli且werkzeug子进程无法被attach;正确做法是launch.json中设"module": "flask",配合args指定run命令及--no-debugger等参数,并确保.env文件位置正确、格式规范。

VSCode调试Flask断点不触发?必须用"module": "flask"
直接原因:用了"program": "app.py"启动方式。这会让VSCode绕过Flask CLI,Werkzeug fork出的子进程无法被调试器attach,断点自然失效。
正确做法是强制走官方启动流程:
-
launch.json里"module"字段必须设为"flask",不能写"program" -
"args"写成["run", "--host=127.0.0.1:5000", "--no-debugger"],--no-debugger防冲突 - 若用工厂函数(如
create_app()),args要改成["--app", "app:create_app", "run", "--no-reload"],注意格式是模块名:函数名
.env文件位置和内容错一点,flask run就报Could not locate a Flask application
VSCode的Debug不读终端里的export FLASK_APP=app.py,只认envFile指定的文件。路径或格式错,就会找不到入口。
实操要点:
-
.env必须和app.py同级(不是项目根目录随便放) - 内容严格两行,无空行、无多余空格:
FLASK_APP=app.py和FLASK_DEBUG=1 - 如果主文件在
src/app.py,FLASK_APP要写成src.app,且必须用File → Open Folder打开整个项目根目录,否则Python找不到模块 -
FLASK_ENV在Flask ≥2.3已弃用,写进去反而可能报错
Django调试失败,八成是DJANGO_SETTINGS_MODULE没传进去
VSCode默认不自动设置环境变量,runserver命令依赖DJANGO_SETTINGS_MODULE定位配置,缺了就起不来。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
关键配置项:
- 在
.vscode/launch.json中,"env"字段必须显式包含:"DJANGO_SETTINGS_MODULE": "myproject.settings"(替换成你真实的模块路径) -
"args"至少填["runserver", "8000"],避免监听默认端口被占 - 如果
manage.py不在项目根目录(比如放在src/下),得改"module"为"django.core.management",并在"args"里加["--pythonpath", "./src", "runserver"]
虚拟环境没激活,import flask或import django就报错
VSCode底部状态栏显示venv路径 ≠ 终端已激活。没激活就pip install,包实际装到系统Python里,解释器根本找不到。
确认是否真激活:
- 终端提示符开头有
(venv)或(.venv)字样 - 运行
which python(macOS/Linux)或where python(Windows),输出路径应指向venv/bin/python或venv\Scripts\python.exe - 在Python文件里悬停
from flask import Flask,不该有红线;import django同理
最常被忽略的是:VSCode不自动继承终端激活状态。每次新开终端都要手动source .venv/bin/activate(或.venv\Scripts\activate.bat),或者用Terminal: Create New Terminal命令——它会自动激活当前工作区绑定的环境。










