上传Python模块Shapely为AWS Lambda层提示找不到模块问题求助
问题原因与解决方法
你遇到的报错核心是Python依赖包的打包路径不符合AWS Lambda层的规范:Lambda要求Python运行时的层依赖必须存放在压缩包根目录的python/路径下,你当前把依赖放在了shapely/路径下,Lambda运行时无法识别加载。
修复步骤
- 调整打包目录结构,把之前创建的
shapely文件夹重命名为python,再重新打包发布即可,修正后的完整操作命令如下:
mkdir folder cd folder virtualenv --python=python3.6 v-env source ./v-env/bin/activate pip3 install shapely deactivate # 这里创建的目录必须是python,不能是自定义名称 mkdir python cd python cp -r ../v-env/lib/python3.6/site-packages/* . cd .. zip -r shapely.zip python aws lambda publish-layer-version --layer-name shapely --zip-file fileb://shapely.zip --compatible-runtimes python3.6
其他可选排查点
- 确认Lambda函数的运行时版本和打包用的Python版本完全匹配,若你当前函数使用的是高于3.6的Python版本,打包时对应调整命令里的Python版本号即可。
- 本地解压生成的
shapely.zip检查结构,确认压缩包第一层就是python文件夹,python文件夹下直接存在shapely相关的包文件,无多余嵌套层级。 - 若你是在Mac/Windows系统下打包,Shapely包含的二进制依赖可能和Lambda的Linux运行环境不兼容,可选择在Amazon Linux2容器环境下安装依赖再打包,避免二进制兼容问题。
- 确认Lambda函数绑定的是最新发布的层版本,没有错选旧的错误版本。
内容的提问来源于stack exchange,提问作者lambda_new
相关产品推荐
相关产品推荐

