将 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 中使用的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

Anaconda中常用的用法

数据科学Python数据可视化概述

将引导程序添加到流星包

将 VSTS 包源添加到 NuGet 包资源管理器

knp 菜单包 - 如何将标签添加到标签?

将 python3 包添加到 Buildroot