You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.11+FastAPI容器报错:无法从typing导入NotRequired

问题原因分析

错误ImportError: cannot import name 'NotRequired' from 'typing'的核心原因是:

  • 你使用的Docker基础镜像是python:3.11.0a1-alpine,这是Python 3.11的Alpha预览版,而typing.NotRequired是在Python 3.11的正式发布版中才新增的特性,Alpha版本尚未包含该内容。
  • 本地虚拟环境使用的是Python 3.11正式版或更高版本,因此能正常运行;但容器内的Alpha版本Python不支持NotRequired,导致uvicorn启动失败。
解决方案

方案1:更换为稳定版Python镜像(推荐)

修改Dockerfile中的基础镜像,替换为Python 3.11的正式稳定版或更高版本:

# 替换成3.11正式版alpine镜像
FROM python:3.11-alpine
# 或者用更高版本,比如3.12-alpine
# FROM python:3.12-alpine

RUN pip install --upgrade pip

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "5000" ]

修改后重新构建镜像并运行:

docker build -t mycompany/service-name .
docker run --name service-name -d -it -p 5000:5000 mycompany/service-name

方案2:指定兼容Alpha版本的uvicorn版本(不推荐)

如果必须使用Python 3.11.0a1镜像,需要在requirements.txt中指定不依赖NotRequired的旧版uvicorn,比如uvicorn==0.20.0(该版本尚未使用NotRequired特性)。

额外提示
  • 永远避免在生产环境使用Python的Alpha/Beta预览版,这类版本存在大量未修复的bug和特性缺失,稳定性无法保障。
  • 本地开发环境和容器环境尽量保持Python版本一致,减少因版本差异导致的兼容性问题。

内容的提问来源于stack exchange,提问作者Nulla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:47:25