vscode调试fastapi必须用"module": "uvicorn"模式,选对虚拟环境解释器,配置launch.json含--reload,安装fastapi[all],避免async首行断点失效。

VSCode 调试 FastAPI 必须用 module: "uvicorn" 模式,不能写 "program": "main.py";否则 async 函数断点不触发、Depends 注入失效、中间件不执行——这不是代码问题,是调试器根本没进 uvicorn 的 ASGI 生命周期。
怎么选对 Python 解释器
VSCode 默认可能用系统 Python 或全局 pip 安装的包,导致 uvicorn 找不到、fastapi[all] 依赖缺失、类型提示全红。必须手动绑定项目虚拟环境里的 Python 可执行文件。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Python: Select Interpreter - 在列表中找带
.venv、venv或你自定义名(如myenv)的路径;没有就选Enter interpreter path,然后定位到:
– Windows:.venv\Scripts\python.exe
– macOS/Linux:.venv/bin/python - 选中后右下角状态栏会显示该路径;如果没变,关掉所有终端再新开一个
launch.json 必须用 module 模式启动 uvicorn
FastAPI 是 ASGI 应用,生命周期由 uvicorn 管理。"program": "main.py" 会绕过 uvicorn.run(),async 上下文丢失,断点形同虚设。
- 在项目根目录建
.vscode/launch.json,填入标准配置,关键字段不能错:"module": "uvicorn"(不是"program")"args": ["main:app", "--reload", "--host", "127.0.0.1", "--port", "8000"](main:app是字符串,不是变量名)"console": "integratedTerminal"(否则看不到重载日志)"justMyCode": false(调试中间件或异常处理器时必需) - 不要漏掉
--reload:它必须显式写在args里,位置在main:app之后;靠终端补跑另一个 uvicorn 进程会端口冲突 - Linux/WSL 下若报
WatchFiles not available,补装watchfiles:pip install watchfiles
fastapi[all] 和分开装的区别不只是“多几个包”
忽略这个细节,表单上传、JWT 验证、密码哈希这些功能会“莫名不工作”,报错却指向你没写的代码行。
-
pip install fastapi→ 缺uvicorn,运行直接报ModuleNotFoundError: No module named 'uvicorn' -
pip install fastapi uvicorn→ 缺python-multipart(表单解析)、python-jose(JWT)、passlib(密码哈希),FileUpload或OAuth2PasswordBearer会失败 -
pip install "fastapi[all]"→ 自动装全量依赖,包括uvicorn[standard](含uvloop和httptools,性能更好),适合开发期快速验证全部能力
async 函数断点不进?先看 debugpy 和首行陷阱
旧版 Python 扩展(还在用 ptvsd)对协程栈帧支持极差,常见现象是断点停在 await 行但进不去后续逻辑,甚至直接跳过整段 async def。
- 确保安装的是最新 Microsoft 官方
ms-python.python扩展(2026 年已强制使用debugpy) - 检查
debugpy是否启用:pip show debugpy,确认它在当前解释器环境下已安装 - 避免在
async def第一行打断点——某些 Python 3.9/3.10 +debugpy组合下,首行断点会静默失效;移到第二行或函数体内部更稳
最常被忽略的其实是 main:app 这个字符串本身:它要求 main.py 文件存在、位于当前工作目录、且顶层必须有名为 app 的 FastAPI 实例变量;写成 _app、APP 或放在函数里,都会报 Application not found。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











