将 pandas/scikit-learn 包添加到您的项目以在 AWS lambda 中使用的正确方法是啥
Posted
技术标签:
【中文标题】将 pandas/scikit-learn 包添加到您的项目以在 AWS lambda 中使用的正确方法是啥【英文标题】:What is the correct way to add pandas/scikit-learn packages to your project for use in AWS lambda将 pandas/scikit-learn 包添加到您的项目以在 AWS lambda 中使用的正确方法是什么 【发布时间】:2016-02-22 08:37:51 【问题描述】:我正在执行以下文档中提到的所有步骤: http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
我正在使用带有 amazon linux 的亚马逊 ec2 来构建软件包。
我也尝试过执行中提到的步骤 https://markn.ca/2015/10/python-extension-modules-in-aws-lambda/
以下是我将包上传到 AWS lambda 并运行时遇到的错误:
START RequestId: cbfe0762-8f1b-11e5-9a1d-49fb4d3a0d13 Version: $LATEST
Unable to import module 'test': No module named pandas
END RequestId: cbfe0762-8f1b-11e5-9a1d-49fb4d3a0d13
REPORT RequestId: cbfe0762-8f1b-11e5-9a1d-49fb4d3a0d13 Duration: 0.35 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 23 MB
该错误没有给出任何具体指示。
编辑更多细节:
嗨@maxymoo
我只是在创建内容的 zip。不是保存 .py 文件的文件夹。当我尝试使用我的 .py 文件添加“请求”包时,它工作正常。现在,当我尝试用我的 .py 文件添加“pandas”包时,它给了我上述错误。
以下是我正在遵循的步骤:
连接到运行 amazon linux 的 ec2。
启动虚拟环境
使用“pip install pandas”安装 pandas
进入“/home/ec2-user/t1/lib/python2.7/site-packages”目录
取“/home/ec2-user/t1/lib/python2.7/site-packages”的所有内容,将我的test.py文件添加到其中并创建zip文件
李>将 zip 文件上传到 amazon lambda
运行测试
我收到以下错误:
START RequestId: feee67de-8f2f-11e5-bc34-bd42a1d7326b Version: $LATEST
Unable to import module 'test': No module named pandas
END RequestId: feee67de-8f2f-11e5-bc34-bd42a1d7326b
REPORT RequestId: feee67de-8f2f-11e5-bc34-bd42a1d7326b Duration: 0.34 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 29 MB
test.py的内容是:
import json
import requests
import pandas as pd
print('Loading function')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
print("value1 = " + event['key1'])
print("value2 = " + event['key2'])
print("value3 = " + event['key3'])
return event['key1'] # Echo back the first key value
#raise Exception('Something went wrong')
以下是 zip 文件中的文件:
drwxrwxr-x 52 pds staff 1768 Nov 19 17:09 setuptools
drwxrwxr-x 32 pds staff 1088 Nov 19 17:09 requests
drwxrwxr-x 34 pds staff 1156 Nov 19 17:10 pip
drwxrwxr-x 11 pds staff 374 Nov 19 17:10 setuptools-12.0.5.dist-info
drwxrwxr-x 10 pds staff 340 Nov 19 17:10 pip-6.0.8.dist-info
drwxrwxr-x 8 pds staff 272 Nov 19 17:10 requests-2.8.1.dist-info
drwxrwxr-x 6 pds staff 204 Nov 19 17:10 pkg_resources
drwxrwxr-x 6 pds staff 204 Nov 19 17:10 _markerlib
-rw-r--r--@ 1 pds staff 374 Nov 19 17:15 test.py
-rw-r--r-- 1 pds staff 3912745 Nov 19 17:16 Archive.zip
-rw-r--r-- 1 pds staff 315 Nov 19 18:09 easy_install.pyc
drwxrwxr-x 9 pds staff 306 Nov 19 18:09 pytz-2015.7.dist-info
-rw-r--r-- 1 pds staff 30098 Nov 19 18:10 six.py
-rw-r--r-- 1 pds staff 126 Nov 19 18:10 easy_install.py
drwxrwxr-x 8 pds staff 272 Nov 19 18:11 six-1.10.0.dist-info
drwxrwxr-x 15 pds staff 510 Nov 19 18:11 pytz
drwxrwxr-x 9 pds staff 306 Nov 19 18:11 python_dateutil-2.4.2.dist-info
-rw-r--r-- 1 pds staff 29545 Nov 19 18:11 six.pyc
drwxrwxr-x 17 pds staff 578 Nov 19 18:11 dateutil
【问题讨论】:
你的目录结构是什么?您是否不小心压缩了项目文件夹本身而不仅仅是文件夹的内容? 嗨@maxymoo 我已将相关细节添加到问题本身。我只是将文件压缩到主目录下。问题中提到了 zip 文件的内容。评论中有字符限制,所以我编辑了问题。 【参考方案1】:我没有看到 pandas 目录。它在“Archive.zip”中吗?如果是这样,您可能需要在压缩项目文件之前将其解压缩到项目根文件夹。
希望对您有所帮助。
【讨论】:
以上是关于将 pandas/scikit-learn 包添加到您的项目以在 AWS lambda 中使用的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章