modulenotfounderror: no module named 'fastapi' 表明当前 python 解释器未安装 fastapi,主因是环境隔离或安装路径错位;需确认并激活目标环境(如 venv),再执行 pip install fastapi "uvicorn[standard]"。

ModuleNotFoundError: No module named 'fastapi' 是 Python 3.10 环境下 FastAPI 启动失败最常见、也最直接的报错——它不表示 Python 版本不兼容,而是说明当前解释器根本没装 fastapi。
Python 3.10 完全支持 FastAPI(官方明确支持 3.8–3.12),所以版本本身不是问题根源。真正卡住你的,几乎总是环境隔离或安装路径错位。
pip install fastapi 装了但还是报错?
这是典型「安装到了 A 环境,而 VSCode/终端在用 B 环境」的问题:
- 你在全局 Python 里运行了
pip install fastapi,但 VSCode 右下角显示的是某个 venv 或 conda 环境(比如Python 3.10.12 ('venv')); - 或者你激活了虚拟环境,却忘了先激活就直接 pip install,结果装进了系统 Python;
- 还有一种情况:你用了
python -m pip install,但调用的是另一个 Python 解释器(比如py -3.10 -m pip install和python指向不同二进制)。
验证方法很简单,在终端里运行:
python -c "import fastapi; print(fastapi.<strong>version</strong>)"
如果报错,说明当前 python 命令对应的环境确实没装。
解决步骤:
- 先确认当前终端用的是哪个 Python:
which python(macOS/Linux)或where python(Windows); - 激活你要用的虚拟环境(如
source venv/bin/activate或venv\Scripts\activate.bat); - 再执行:
pip install fastapi "uvicorn[standard]"(注意引号,避免 shell 解析错误)。
uvicorn main:app --reload 报 Attribute "app" not found in module "main"
这个错和 Python 版本无关,只和代码结构有关:
-
main.py文件里没有定义名为app的变量; - 或者
app = FastAPI()写在了某个条件分支里(比如if <strong>name</strong> == "<strong>main</strong>":下面),导致模块导入时不可见; - 或者文件名不是
main.py,但你硬写了uvicorn main:app—— 比如实际是app.py,就得改成uvicorn app:app。
快速自查:
- 打开
main.py,确认第一层作用域(非函数、非 if 块内)有且仅有一行:app = FastAPI(); - 不要用
application = FastAPI()或api = FastAPI()然后还跑uvicorn main:app; - 如果非要用别的名字,启动命令必须同步改,例如:
uvicorn main:application --reload。
Windows 上跑 asyncio.create_subprocess_exec 直接抛 NotImplementedError
Python 3.10 + Windows 组合下,这是 asyncio 默认事件循环(ProactorEventLoop)不支持某些子进程操作导致的。FastAPI/Uvicorn 启动后,如果你在路由里调用了类似 playwright.async_api、httpx.AsyncClient 或手动创建子进程的代码,就可能触发。
根本原因:Windows 的 ProactorEventLoop 在部分 I/O 场景(尤其是 stdio 重定向)下未实现底层 transport。
临时解法(开发阶段可用):
- 在入口文件顶部加两行:
import asyncio asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
- 或者更稳妥的方式:用
uvicorn启动时指定策略:uvicorn main:app --reload --loop asyncio --http httptools(需额外装httptools)
⚠️ 注意:这不是 FastAPI 的 bug,是 Python 标准库在 Windows 上的历史限制,3.10 并未修复它。
FastAPI 在 Python 3.10 下能跑起来的前提,从来不是“版本够新”,而是「环境干净、路径对得上、事件循环没被默认策略卡死」。这三个点里任意一个偏移,都会让启动失败看起来像版本不兼容。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











