2017-03-01 50 views
1

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

错误I' m得到是:

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

通过this post的启发,我能够pip installnumpy在Linux环境中,并让它在LAMBDA工作。

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

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

我已经与LAMBDA在hello-world-python例如较小的变化测试它:

from __future__ import print_function 
import numpy 

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

(更新)延伸问题:为什么某些软件包可以工作而其他软件却不能?

+1

您必须使用为Amazon Linux构建的版本。您无法在Lambda部署中打包Mac二进制文件。 –

+0

谢谢@MarkB。你知道为什么'numpy'的情况是这样,而不是其他包? 'numpy'是我遇到这个问题的唯一一个(到目前为止)。问另一种方式 - 是否有办法提前知道哪些软件包需要Linux版本? – Tchotchke

回答

0

基于@MarkB的评论,在Mac上无法构建numpy以在AWS Lambda上使用。那么为什么一些软件包可以工作而其他软件却不行

Python扩展模块,如在标记Nunnikhoven的博客here,解释是

用C或C++的是可以扩展Python或调用C或C++ 库。

由于这些模块是针对您所在系统编译的,并且AWS Lambda是Linux环境,所以您需要在Linux环境中安装任何扩展模块。