pip install uvicorn基础安装不足以支撑生产需求,因缺失uvloop、httptools、websockets、watchfiles等关键依赖,导致性能低下、websocket失效、热重载失灵等问题;推荐使用pip install "uvicorn[standard]"一次性安装完整依赖。

直接用 pip install uvicorn 就能装,但得看你要干啥
基础安装 pip install uvicorn 足够跑个 Hello World,但生产环境或需要 WebSocket、自动重载、高性能 HTTP 解析时,它缺关键依赖,会报错或性能拉胯。
为什么 pip install uvicorn 经常不够用
最小安装只含纯 Python 实现,不带:uvloop(Linux/macOS 下事件循环慢 2–3 倍)、httptools(HTTP 解析比纯 Python 快 5–10 倍)、websockets(没它 FastAPI 的 /ws 路由直接 404)、watchfiles(--reload 不生效)。
- 运行
uvicorn main:app --reload却不热重载?大概率缺watchfiles - 启动时报
WebSocket upgrade request rejected?基本是没装websockets - 压测时 CPU 持续 90%+,而别人同配置才 30%?可能没走
uvloop或httptools
推荐安装方式:用 pip install "uvicorn[standard]"
方括号里的 standard 是官方定义的 extras,会一并装上:uvloop、httptools、websockets>=10.4、watchfiles、click、h11 等。Windows 用户也能用,只是 uvloop 在 Windows 上会被跳过(改用内置 asyncio 事件循环)。
- 命令必须加英文双引号或单引号,否则 shell 会把方括号当通配符解析失败
- 如果提示
ERROR: Could not find a version that satisfies the requirement uvicorn[standard],先升级 pip:pip install -U pip - 验证是否装全:运行
python -c "import uvloop, httptools, websockets, watchfiles",不报错才算到位
Windows 下常见卡点
不是所有依赖都能在 Windows 上编译成功,尤其旧版 MSVC 或没装 C++ 构建工具时,httptools 和 uvloop 容易安装失败。
- 优先用预编译 wheel:
pip install --only-binary=all "uvicorn[standard]" - 若仍失败,可退一步:先
pip install uvicorn,再单独装pip install websockets watchfiles,至少保 WebSocket 和热重载可用 -
uvloop在 Windows 上非必需,asyncio 默认事件循环够用;但 Linux/macOS 生产环境务必让它生效
uvicorn[standard] 是默认起点。漏装一个依赖,可能到上线前夜才暴露——比如客户连不上 WebSocket,或者日志里满屏 RuntimeWarning: coroutine 'X' was never awaited,根源却是 watchfiles 没装导致 reload 机制异常触发。











