AWS GovCloud Lambda通过层部署Numpy报错的解决求助
解决AWS GovCloud Lambda层中Numpy导入错误的方法
错误原因分析
这个导入错误是因为安装Numpy时,打包的层中混入了Numpy的源码目录文件(如setup.py),导致Lambda运行时误以为在Numpy源码目录内执行导入操作。
具体解决步骤
- 清理原有安装目录,确保环境干净
rm -rf ./python && mkdir ./python - 匹配Lambda使用的Python版本,用对应版本的pip安装Numpy,强制使用二进制包并禁用缓存,避免源码编译问题:
# 替换为你的Lambda实际使用的Python版本,比如python3.9 python3.9 -m pip install numpy --only-binary=:all: --no-cache-dir -t ./python - 清理无关源码文件:进入
./python目录,删除Numpy文件夹下的setup.py、setup.cfg,以及根目录下的README、LICENSE等非运行必需文件 - 正确打包层:将整个
python文件夹直接打包为zip(避免把python文件夹嵌套在其他目录中)zip -r numpy-layer.zip python - 上传zip到Lambda层,关联到目标X86架构的Lambda函数后,测试导入:
import numpy print(numpy.__version__)
额外注意事项
- 确保CloudWatch执行环境为X86架构,和Lambda函数的架构完全匹配
- 安装及打包操作始终在
python目录的上级目录执行,不要进入Numpy子目录操作
内容的提问来源于stack exchange,提问作者Mike Dergance
相关产品推荐
相关产品推荐

