Lambda无法识别已添加的Layer,导入pandas报Module Not Found错误
AWS Lambda Python3.8 引入Layer后pandas模块找不到的常见原因
- 目录结构不符合Lambda规范
Lambda要求Python层的依赖必须存放在zip包根目录下的python文件夹中,你直接将pandas安装在当前目录后打包,解压后pandas相关目录直接位于zip根路径,Lambda运行时无法检索到对应模块。正确操作是先新建python目录,执行pip3 install pandas -t ./python,再将整个python目录打包为zip包。 - 依赖包和Lambda运行环境不兼容
如果你是在Windows、macOS本地环境执行的pip安装命令,下载的pandas包包含适配本地系统的二进制文件,和Lambda使用的Amazon Linux 2运行环境不兼容。可在安装时指定兼容平台,完整命令为:pip3 install pandas -t ./python --platform manylinux2014_x86_64 --only-binary=:all: --upgrade - 架构不匹配
如果你的Lambda函数选择了arm64(Graviton2)架构,但安装的pandas是x86_64架构版本,也会触发模块找不到错误,需保证依赖安装的架构和Lambda执行架构一致。 - 文件权限问题
打包时如果pandas相关的文件、目录没有开放全局读权限,Lambda运行时没有权限读取模块文件也会报错,打包前需确认所有依赖文件的读权限对所有用户开放。 - 配置绑定错误
确认你绑定到Lambda的是最新上传的Layer版本,Layer的兼容运行时已勾选Python3.8,同时Lambda的内存配置不低于256M,避免依赖加载过程中因内存不足被误报为模块不存在。
内容的提问来源于stack exchange,提问作者Janzaib M Baloch
相关产品推荐
相关产品推荐

