【发布时间】:2020-01-01 11:08:56
【问题描述】:
START RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99 版本:$LATEST 无法导入模块“lambda_function”:没有名为“pandas”的模块
结束请求 ID:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99
我使用 Windows 7 64 位作为主机操作系统。
我想做什么
我只是想在 AWS-Lambda 环境中使用 pandas。就像我在windows环境中使用它一样,我正在为Lambda寻找一个简单的解决方案。
到目前为止我所尝试的
- 在虚拟盒子上安装了 Xubuntu。
- 在Xubuntu 中的virtual-box 上创建一个名为
myvenv的虚拟环境。 - 然后我在
myvenv中安装了pandas3.6。 - 之后,我将
myvenv中位于'/usr/local/lib/python3.6/site-packages/'的文件夹内容复制到我的主机操作系统。 - 在主机操作系统(windows 7)中,我创建了一个名为
packs的文件夹,粘贴了myvenv的内容。 - 在主机操作系统(Windows 7)的
packs中创建了lambda_function.py脚本 - 然后我使用 7zip 软件将文件夹
packs压缩并上传为zip到Lambda - 在 Lambda 中,lambda 函数处理程序名称为
lambda_handler()。代码 sn-p 看起来像,
将熊猫导入为 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-roleAWSLambdaFullAccess权限。 - 超时设置为 4 分 3 秒。
-
测试事件的样子
{ "key1": "如果一切正常,这将被打印出来" }
我尝试了以下解决方案:
- 尝试了来自 here 的 pandas 和 numpy 的预编译 linux 兼容二进制文件——没有运气。
- 在 Lambda 中,将
Handler info更改为 python_filename.function_name。就我而言,它是 lambda_function.lambda_handler -- 失败,没有名为 'pandas' 的模块错误。 - 将 lambda 函数放在根文件夹中,使用 7zip 软件压缩文件夹并将文件夹上传到 S3 存储桶。就我而言,我将函数放置在位置
python\lib\python3.6\site_packages\lambda_function.pyfailed with no module named 'pandas' error。 - 已经尝试过发布在SO上的这些相关解决方案,1,2,3,4,5,6
注意:我不想使用 Docker,因为我不知道如何使用它,我也不愿意学习它,因为我现在很生气。我来自 Windows 环境(这很糟糕,我现在知道了。)
关于如何让它发挥作用的任何想法。
【问题讨论】:
-
去过那里,我真的不建议在 Windows 中压缩您的依赖项(权限和所有将是您的问题)。我没有尝试在 lambda 中安装 pandas,但我确实有尝试安装其他库的经验(即
psycopg2)。虽然我没有完成您描述的一些困难步骤,但我通常做的只是(1)创建一个文件夹; (2) 在创建的文件夹中添加python文件; (3) 直接在该文件夹上安装依赖项(即pip install -t <folder_path_here> lib1 lib2); (4) Zip all the contents (zip -r lambda.zip .`); (5) 上传zip文件到lambda; -
@fixatd 感谢您的回复。建议的解决方案是我已经尝试过但没有运气的东西。
-
啊,一定是您列出的解决方案之一。应该是错过了那个。不能确定为什么你的失败,因为我没有尝试过
pandas -
从 cli 到 lambda_function.py 所在的文件夹位置和
pip install -t . pandas然后压缩文件夹,上传。 -
@Lamanus 感谢您的回复。建议的解决方案是我已经尝试过但没有运气的东西
标签: python-3.x amazon-s3 aws-lambda aws-lambda-layers