2017-03-01 79 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環境中安裝任何擴展模塊。