在 Mac 上安装 numpy 以在 AWS Lambda 上工作

Tch*_*hke 6 python amazon-web-services aws-lambda

有没有办法numpy在 Mac上安装,以便在上传到 AWS Lambda 时可以正常工作?我尝试了各种不同的方法,包括使用不同的pip版本、使用easy_install和关注这篇文章,但它们似乎都不起作用。我也尝试克隆 git repo 并从那里构建,但我也无法让它工作(尽管我不确定这样做后是否复制了正确的文件)

我得到的错误是:

无法导入模块“lambda_function”:导入多阵列 numpy 扩展模块失败。很可能您正在尝试导入失败的 numpy 构建。如果您正在使用 numpy git repo,请尝试 git clean -xdf(删除所有不受版本控制的文件)。否则重新安装numpy。

这篇文章的启发,我能够pip install numpy在 Linux 环境中运行 Lambda。

所以我的问题是:是否可以numpy在 Mac上安装以便它在 AWS Lambda 上运行?

环境:MacBook Pro,MacOS 10.12.2,默认python版本2.7.10

我一直在hello-world-python对 Lambda上的示例稍作修改:

from __future__ import print_function
import numpy

def lambda_handler(event, context):
    #print("Received event: " + json.dumps(event, indent=2))
    print("value1 = " + event['key1'])
Run Code Online (Sandbox Code Playgroud)

(更新)扩展问题:为什么有些包可以工作而有些则不行?

Jam*_*iro 5

更新:现在的首选方法是仅将 AWS 提供的 Lambda 层用于 NumPy/SciPy,这非常容易做到。

在控制台中,选择您的功能,然后在“设计”部分下单击“层”。然后单击“添加层”,并在“AWS 提供”下选择“AWSLambda-Python37-SciPy1x”(或您使用的 Python 版本的任何等效项)。

然后,您可以毫无问题地将 numpy、scipy 等无缝导入到您的代码中。

10/26/2020 - 添加示例截图: 在此处输入图片说明

在此处输入图片说明


Tch*_*hke 0

根据 @MarkB 的评论,不可能numpy在 Mac 上构建并在 AWS Lambda 上使用。那么为什么有些软件包可以工作,而另一些则不能呢?

Python 扩展模块,如 Mark Nunnikhoven 的博客中所述

用 C 或 C++ 编写,可以扩展 python 或调用 C 或 C++ 库。

由于这些模块是专门针对您所在的系统进行编译的,并且 AWS Lambda 是 Linux 环境,因此您需要在 Linux 环境上安装任何扩展模块。