START RequestId: 3d5691d9-ad79-4eed-a26c-5bc3f1a23a99 Version: $LATEST Unable to import module 'lambda_function': No module named 'pandas'
END RequestId: 3d5691d9-ad79-4eed-a26c-5bc3f1a23a99
我使用 Windows 7 64 位作为主机操作系统。
我想做的事
我只是想在 AWS-Lambda 环境中使用 pandas。就像我在 windows 环境中使用它一样,我正在为 Lambda 寻找一个简单的解决方案。
到目前为止我尝试过的
myvenv
的虚拟环境在虚拟盒子上的 Xubuntu 中。 myvenv
中安装了pandas3.6 . myvenv
地点 '/usr/local/lib/python3.6/site-packages/'
到我的主机操作系统。 packs
的文件夹。 ,粘贴myvenv
的内容. lambda_function.py
packs
中的脚本在主机操作系统 (windows 7) packs
使用7zip软件上传为zip
在 Lambda
lambda_handler()
.代码片段看起来像,import pandas as 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
允许。 {
"key1": "如果一切正常,这将被打印出来"
}
我尝试了以下解决方案:
Handler info
到 python_filename.function_name。就我而言,它是 lambda_function.lambda_handler -- 失败,没有名为“pandas”的模块错误 . python\lib\python3.6\site_packages\lambda_function.py
失败,没有名为“pandas”的模块错误 . 注意:我不想使用 Docker,因为我不知道如何使用它,我也不愿意学习它,因为我现在很生气。我来自 Windows 环境(这很糟糕,我现在知道了。)
关于如何让它发挥作用的任何想法。
最佳答案
我能够使用 Lambda 层和 Amazon linux
成功导入 pandas 库云 9 实例。有我在 Cloud 9 实例中执行的命令和 Lambda 函数的输出。我不得不稍微更改代码,因为它因导入错误和字符串值错误而失败。
或者,这些命令也可以在 EC2 实例中执行。如果无法使用 SAM CLI (使用 docker)或只是在 windows 上使用普通 docker,我们需要使用 Amazon Linux
实例来构建一切,因为这就是 AWS Lambda uses currently .我不相信使用 ubuntu 实例会在这里工作。
命令 :
python --version
Python 3.6.8
# https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
# python 3.6 uses Amazon Linux currently
mkdir project
cd project
virtualenv v-env
source ./v-env/bin/activate
pip install pandas
deactivate
# creating layer
# https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path
mkdir python
cd python
cp -r ../v-env/lib64/python3.6/dist-packages/* .
cd ..
zip -r panda_layer.zip python
aws lambda publish-layer-version --layer-name pandas --zip-file fileb://panda_layer.zip --compatible-runtimes python3.6
publish-later-version命令将创建一个新的 AWS Lambda layer在命令中给出的区域或 config file对于 CLI。
Lambda 层会将库应用于 Lambda 函数的代码,而无需将其直接应用于部署包。这也允许在 Lambda 中使用在线代码编辑器,因为部署包位于 limit of 3MB 下。
我通过单击 Web 控制台中的图层按钮并选择我最近发布的图层版本来应用 Lambda 图层。我在那里有第二个版本,因为我第一次尝试时将
lib
的内容放入不适用于 64 位操作系统的目录,并且我的代码在 AWS Lambda 中失败。或者,您也可以使用 CLI 命令 update-function-configuration 应用层。
我使用的 Lambda 函数代码 :
import pandas as pd
import numpy as np
def lambda_handler(event, context):
dates = pd.date_range(start='1/1/2018', end='1/08/2018')
df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=list('ABCD'))
print(str(df))
Lambda 输出 :
START RequestId: 27f09b6c-a4cd-49dd-bb3e-ae6fc7cd5850 Version: $LATEST
A B C D
2018-01-01 -1.040318 0.450841 -0.381687 -0.105480
2018-01-02 -1.381793 -0.481572 0.828419 -0.885205
2018-01-03 1.437799 -0.649816 -0.577112 0.400670
2018-01-04 -0.730997 -0.778775 -1.514203 1.165661
2018-01-05 1.963595 -1.137054 0.920218 0.960210
2018-01-06 -0.429179 -0.745549 1.482562 0.298623
2018-01-07 -1.082388 -0.529476 -1.051663 1.616683
2018-01-08 0.042779 -2.338471 -0.142992 0.680399
END RequestId: 27f09b6c-a4cd-49dd-bb3e-ae6fc7cd5850
REPORT RequestId: 27f09b6c-a4cd-49dd-bb3e-ae6fc7cd5850 Duration: 536.76 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 122 MB Init Duration: 1721.51 ms
XRAY TraceId: 1-5d741e40-1311daa29fc16c74735988fc SegmentId: 61a595dd3492c331 Sampled: false
关于python-3.x - 无法导入模块 'lambda_function' : No module named 'pandas' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688731/