部署FastAPI至AWS Lambda时遇pydantic_core导入错误求助
FastAPI部署到AWS Lambda时
pydantic_core._pydantic_core缺失错误解决方法 错误场景
部署FastAPI到AWS Lambda时出现以下错误:
[ERROR] Runtime.ImportModuleError: Unable to import module 'users_crud': No module named 'pydantic_core._pydantic_core'
即便已安装Pydantic库,且使用AWS支持的Python 3.10版本。
问题根源
Pydantic v2及以上版本依赖底层扩展库pydantic_core,如果在Windows/macOS等非Linux环境下安装依赖,编译生成的二进制文件与AWS Lambda的Amazon Linux环境不兼容,导致部署后Lambda无法找到对应的模块文件。
解决方法
1. 在Linux环境构建兼容的依赖包
AWS Lambda运行在Linux环境下,必须确保依赖包是针对该环境编译的,推荐用Docker模拟Lambda环境:
- 拉取Lambda兼容的Python 3.10镜像:
docker pull public.ecr.aws/sam/build-python3.10 - 启动容器并挂载本地项目目录:
docker run -v $(pwd):/app -it public.ecr.aws/sam/build-python3.10 /bin/bash - 在容器内安装依赖到指定目录:
pip install pydantic fastapi -t ./package - 退出容器后,将
package目录下的所有文件和你的业务代码打包成zip文件,上传到AWS Lambda即可。
2. 使用Lambda层管理依赖
将Pydantic及相关依赖打包成Lambda层,便于多个函数复用:
- 按上述Docker方法构建依赖包,将
package目录下的内容打包成zip(注意不要包含package目录本身,直接压缩内部文件) - 在AWS控制台创建新的Lambda层,上传这个zip包,运行时选择Python 3.10
- 在目标Lambda函数的配置中添加该层,函数即可加载兼容的Pydantic依赖
3. 降级Pydantic到v1.x版本(临时方案)
如果不需要Pydantic v2的新特性,可以降级到不依赖pydantic_core的v1.x版本:
- 安装指定版本的Pydantic:
pip install pydantic==1.10.12 -t ./package - 打包依赖和代码后部署到Lambda即可解决错误
内容的提问来源于stack exchange,提问作者Suhail Abdul Rehman Chougule
相关产品推荐
相关产品推荐

