FastAPI部署AWS Lambda遇阻:模块导入与依赖问题求助
AWS Lambda部署FastAPI应用的依赖导入问题
问题背景
尝试将BookContentToYoutubeVideos代码库部署到AWS Lambda,已在main.py中用Mangum封装FastAPI应用:
app = FastAPI() handler = Mangum(app)
配置Lambda处理程序为main.handler后,先后遇到两个错误:
错误1:找不到main模块
报错信息:
{ "errorMessage": "Unable to import module 'main': No module named 'main'", "errorType": "Runtime.ImportModuleError", "requestId": "3f597b25-74db-4db5-9c9a-788782883812", "stackTrace": [] }
推测是Windows直接压缩导致路径结构错误,改用WSL打包后,出现新错误。
错误2:找不到pydantic_core._pydantic_core
报错信息:
"Unable to import module 'main': No module named 'pydantic_core._pydantic_core'",
本地依赖文件夹及Lambda压缩包中均存在该模块,但仍无法导入。
问题原因
- main模块找不到:Windows压缩时可能将文件嵌套在子文件夹中,Lambda要求压缩包根目录直接包含
main.py等核心文件。 - pydantic_core依赖不兼容:直接用WSL的pip安装依赖,可能下载了与Lambda运行环境(Amazon Linux)不匹配的二进制包,导致无法加载。
正确打包步骤(适配Lambda)
在WSL或Linux环境执行以下操作:
- 创建空目录(如
lambda_deploy),将项目所有.py文件复制到该目录根下 - 安装兼容Lambda的依赖:
pip install -r requirements.txt -t . --platform manylinux2014_x86_64 --only-binary=:all: - 压缩目录内所有内容(确保根目录是文件,不是文件夹):
zip -r lambda_artifact.zip . - 将生成的
lambda_artifact.zip上传至Lambda函数
额外检查项
- 确认Lambda的Python运行时版本与本地开发版本完全一致(如均为3.10)
- 解压压缩包验证:
main.py直接在根目录,pydantic_core目录下存在_pydantic_core.so(Linux二进制文件) - 排除不必要的文件:不要把虚拟环境、Windows系统文件(如
.exe、.pyd)打包进去
内容的提问来源于stack exchange,提问作者j stevenage
相关产品推荐
相关产品推荐

