已安装numpy仍提示缺失依赖,AWS Lambda部署包问题如何解决?
解决AWS Lambda导入numpy依赖失败的问题
看起来你碰到了MacOS打包依赖与Lambda Linux环境不兼容的典型坑——Lambda运行在Amazon Linux 2环境上,你在MacOS用pip安装的numpy是针对Darwin(Mac)架构编译的二进制文件,没法在Linux环境中运行,所以Lambda才会一直提示找不到依赖。下面给你几个可行的解决方案:
方案1:用Docker模拟Lambda环境安装依赖(推荐)
这是最可靠的方式,能确保依赖完全适配Lambda的运行环境:
- 先安装Docker(如果还没部署的话)
- 打开终端,进入你的
project-dir目录:cd ~/Desktop/project-dir - 拉取对应版本的Lambda Python镜像(比如你用Python 3.9就用
public.ecr.aws/lambda/python:3.9),然后在容器内安装依赖:docker run -v "$PWD":/var/task public.ecr.aws/lambda/python:3.9 pip install numpy pandas twilio requests -t . - 安装完成后退出容器,此时
project-dir里的依赖就是Linux兼容版本了。
方案2:检查部署包结构
打包时要注意两个细节:
- 确保
Twilio_Alerts_AWS.py和所有依赖文件夹(比如numpy、pandas、twilio)都在zip的根目录,不要把整个project-dir文件夹打包进去——解压zip后应该直接能看到主脚本和依赖文件夹,而不是先看到project-dir再进去找内容。 - 删除MacOS自动生成的冗余文件,比如
.DS_Store,这些文件可能干扰Lambda的依赖加载:find . -name ".DS_Store" -delete
方案3:修正代码语法错误
另外你的代码有个语法问题,第一行的import语句格式不对:
# 错误写法 from twilio.rest import Client import time import datetime import requests import pandas as pd from pandas.io.json import json_normalize # 正确写法(每个import单独一行更清晰) from twilio.rest import Client import time import datetime import requests import pandas as pd from pandas.io.json import json_normalize
虽然这不是numpy报错的直接原因,但语法错误会导致Lambda执行失败,建议先修正。
最后重新打包:选中project-dir里的所有文件(不要选文件夹本身),压缩成archive.zip,再上传到S3或直接导入Lambda试试。
内容的提问来源于stack exchange,提问作者RustyShackleford
相关产品推荐
相关产品推荐

