vscode调试fastapi需用"module": "uvicorn"模式并配置args为["main:app", "--host", "127.0.0.1", "--port", "8000"],禁用"program"方式以防异步上下文丢失;同时确保python解释器指向项目虚拟环境且已安装fastapi[all]。

VSCode 跑 FastAPI 不难,但卡住的地方往往不是代码,而是环境没对上——比如 uvicorn 找不到、app 实例被识别为未定义、调试断点不生效,或者改了代码不自动重载。核心就一条:Python 解释器必须指向你项目专用的虚拟环境,且 uvicorn 必须在这个环境里装好。
怎么选对 Python 解释器
VSCode 默认可能用系统 Python 或全局 pip 安装的包,这会导致 fastapi 和 uvicorn 找不到,或者版本冲突。必须手动指定项目虚拟环境里的 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 - 选中后,右下角状态栏会显示该路径;如果没变,关掉终端再重开一个
为什么 uvicorn main:app --reload 在终端里能跑,但调试启动不了
因为 VSCode 调试器默认不走 shell 命令行逻辑,它需要明确告诉 Python 进程去调用哪个模块、传什么参数。直接写命令会失败。
- 在项目根目录建
.vscode/launch.json(若没有.vscode文件夹,先创建) - 填入标准 FastAPI 启动配置,关键字段不能错:
"module": "uvicorn"(不是"program")"args": ["main:app", "--reload"](注意main:app是字符串,不是变量)"console": "integratedTerminal"(否则看不到日志和重载提示) - 别漏掉
"justMyCode": false,否则断点进不了uvicorn内部(调试中间件或异常时需要)
fastapi[all] 和分开装 fastapi + uvicorn 有啥区别
差别在开发便利性和依赖完整性,不是功能缺失问题。但忽略这点容易导致某些功能“莫名不工作”。
-
pip install fastapi:只装框架核心,uvicorn没装,运行报ModuleNotFoundError: No module named 'uvicorn' -
pip install fastapi uvicorn:能跑,但缺表单解析(python-multipart)、JWT 支持(python-jose)、密码哈希(passlib)等常用扩展 -
pip install "fastapi[all]":自动装全量依赖,包括uvicorn[standard](含uvloop和httptools,性能更好),适合开发期快速验证全部能力
常见报错和对应检查点
这些错误基本都源于环境链断裂,而不是 FastAPI 本身写错了。
-
ImportError: cannot import name 'FastAPI' from 'fastapi'→ Python 解释器没选对,或fastapi没在该环境下安装 -
AttributeError: 'NoneType' object has no attribute 'get'(出现在@app.get)→app = FastAPI()这行没执行,可能是文件名是fastapi.py导致循环导入 - 浏览器打不开
http://127.0.0.1:8000/docs→ 确认启动命令用了--reload,且没加--no-docs;也可能是端口被占,换--port 8001试试 - 修改
main.py后没重载 →--reload只监听当前目录及子目录下的.py文件;如果把路由拆到routes/下,要确保路径没拼错,且没被.gitignore或pycache干扰
最易被忽略的是:VSCode 的终端是否继承了激活后的虚拟环境。即使你在外部终端里 source .venv/bin/activate 过,VSCode 新开的终端默认不读这个状态——必须靠上面说的 Select Interpreter 正确绑定,否则所有 pip install 都装到了错的地方。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











