START RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99版本:$ LATEST 无法导入模块“ lambda_function”:没有名为“ pandas”的模块
END RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99
我使用64位Windows 7作为主机操作系统。
我只是想在AWS-Lambda环境中使用熊猫。就像我在Windows环境中使用它一样,我正在寻找Lambda的简单解决方案。
myvenv
的虚拟环境。 myvenv
中安装了pandas3.6。 myvenv
中'/usr/local/lib/python3.6/site-packages/'
中的文件夹内容复制到了主机OS。packs
的文件夹,粘贴了myvenv
的内容。lambda_function.py
中创建了一个packs
脚本packs
并将其以zip
的形式上传到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-role 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环境(很烂,我现在知道。)
有关如何使其正常工作的任何想法。
答案 0 :(得分:1)
我能够使用Lambda层和Amazon linux
Cloud 9实例成功导入熊猫库。有一些我在Cloud 9实例中执行的命令以及Lambda函数的输出。我必须稍稍更改代码,因为它由于导入错误和字符串值错误而失败。
或者,这些命令也可以在EC2实例中执行。如果无法在Windows上使用SAM CLI(使用docker)或仅使用普通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命令将在命令或CLI的AWS Lambda layer中给定的区域中创建新的config file。
Lambda层会将库应用于Lambda函数的代码,而无需直接将其应用于部署包。由于部署程序包位于limit of 3MB
下,因此这也允许在Lambda中使用在线代码编辑器。我通过单击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