AWS Lambda部署含Numpy的Python包时出现导入错误求助
解决AWS Lambda导入Numpy的路径错误问题
问题原因
你直接把Numpy的源码目录塞进了ZIP包的根目录,Lambda运行时会把ZIP根目录加入Python的模块搜索路径。当执行import numpy时,Python会优先加载根目录里的Numpy源码文件夹,而非正常安装好的可执行包,因此触发了"不要从源码目录导入"的错误。
修复方案
方案1:正确打包依赖(直接包含在代码包)
- 新建一个空文件夹,比如
lambda_build - 用pip把依赖安装到这个文件夹里,注意要适配Lambda的Python版本和服务器架构(比如x86_64或arm64),命令示例:
# 适配Lambda的Python 3.11 x86_64架构 pip install numpy pandas -t ./lambda_build --platform manylinux2014_x86_64 --only-binary=:all: --python-version 311 - 把你的
src文件夹复制到lambda_build目录下 - 进入
lambda_build目录,把所有文件打包成ZIP(注意不要把外层的lambda_build文件夹本身包进去,要包里面的内容)
最终ZIP结构应该是:- numpy/ - pandas/ - src/ - lambda_handler.py
方案2:用Lambda层管理依赖(更推荐)
- 新建一个
python文件夹 - 把Numpy、Pandas安装到这个
python文件夹里,命令同上,只是把目标路径改成./python - 把
python文件夹打包成ZIP,上传到AWS Lambda作为一个层 - 在你的Lambda函数配置里关联这个层,然后只上传你的
src文件夹即可,代码里正常import numpy就可以运行
这样处理后,Python会加载正确的已安装依赖包,不会再触发源码目录的导入错误。
内容的提问来源于stack exchange,提问作者Anil Chouhan
相关产品推荐
相关产品推荐

