开始 RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99 版本:$LATEST 无法导入模块“lambda_function”:没有名为“pandas”的模块
结束 RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99
我使用 Windows 7 64 位作为主机操作系统。
我想做的事
我只是想在 AWS-Lambda 环境中使用 pandas。就像我在windows环境下使用它一样,我正在为Lambda寻找一个简单的解决方案。
到目前为止我尝试了什么
- 在虚拟盒子上安装 Xubuntu。
- 在虚拟机上的 Xubuntu 中创建一个名为
myvenv
的虚拟环境。 - 然后我在
myvenv
中安装了 pandas3.6。 - 此后,我将位于
myvenv
位置'/usr/local/lib/python3.6/site-packages/'
的文件夹内容复制到我的主机操作系统。 - 在主机操作系统(Windows 7)中,我创建了一个名为
packs
的文件夹,粘贴了myvenv
的内容。 - 在主机操作系统 (Windows 7) 的
packs
中创建了一个lambda_function.py
脚本 - 然后我压缩文件夹
packs
使用7zip软件并将其上传为zip
在Lambda
- 在 Lambda 中,lambda 函数处理程序名称是
lambda_handler()
。代码片段看起来像,
将熊猫导入为 pd
def lambda_handler(event, context): dates = pd.date_range('2019001', periods=6) df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) print(df)
- 处理程序命名为
lambda_function.lambda_handler
。我已授予 lambda 角色AWSLambdaFullAccess
权限。 - 超时设置为 4 分 3 秒。
- 测试事件看起来像
{ “key1”:“如果一切正常,这将被打印出来” }
我尝试了以下解决方案:
- 从 这里 尝试了 pandas 和 numpy 的预编译 linux 兼容二进制文件——运气不好。
- 在 Lambda 中,将
Handler info
更改为 python_filename.function_name 。就我而言,它是 lambda_function.lambda_handler -- failed with no module named ‘pandas’ 错误。 - 将lambda函数放在根文件夹中,使用7zip软件压缩文件夹并将文件夹上传到S3存储桶。对于我的情况,我将函数放在位置
python\lib\python3.6\site_packages\lambda_function.py
failed with no module named ‘pandas’ 错误。 - 已经尝试过发布在 SO, 1 , 2 , 3 , 4 , 5 , 6 上的这些相关解决方案
注:我不想用Docker,因为我不知道怎么用,也不愿意学,现在气死我了。我来自 Windows 环境( 很糟糕,我现在知道了。 )
关于如何让它发挥作用的任何想法。
原文由 mnm 发布,翻译遵循 CC BY-SA 4.0 许可协议
我能够使用 Lambda 层和
Amazon linux
Cloud 9 实例成功导入熊猫库。有我在 Cloud 9 实例中执行的命令和 Lambda 函数的输出。我不得不稍微更改代码,因为它因导入错误和字符串值错误而失败。或者,这些命令也可以在 EC2 实例中执行。如果无法在 Windows 上使用 SAM CLI (它使用 docker)或只是普通的 docker,我们将需要使用
Amazon Linux
实例来构建所有内容,因为这是 AWS Lambda 目前使用 的。我不相信使用 ubuntu 实例会在这里工作。命令:
publish-later-version 命令将在命令或 CLI 配置文件 中给定的区域中创建一个新的 AWS Lambda 层。
Lambda 层会将库应用于 Lambda 函数的代码,而无需将其直接应用于部署包。这也允许在 Lambda 中使用在线代码编辑器,因为部署包低于 3MB 的限制
我通过单击 Web 控制台中的层按钮并选择我最近发布的层版本来应用 Lambda 层。我在那里有第二个版本,因为我第一次尝试这是放置
lib
目录的内容,该目录不适用于 64 位操作系统,我的代码在 AWS Lambda 中失败。或者,您也可以使用 CLI 命令 update-function-configuration 应用层
我使用的 Lambda 函数代码:
拉姆达输出: