2016-12-27 99 views
1

我有一個Python功能Lambda使用幾個庫與二進制依賴:numpyscipyPillow等。在過去,我已經成功地將它們編上Amazon Linux &部署到Lambda如何在AWS Lambda上使用Grequests?

我最近增加了Grequest到一堆的依賴關係,但它拋出的錯誤似乎與Grequest沒有直接關係。關於這個話題的Other questions導致了死衚衕,所以把我的帽子放在戒指中。

第一個錯誤是一個簡單的Grequests requires gevent或類似的東西。爲了解決這個問題,我嘗試在Amazon Linux實例上運行pip install gevent --no-binary :all:,將其與我的代碼綁定並上傳到Lambda。這對錯誤沒有影響。

我再從gevent回購下載src和使用make(命令在回購的README丟給我沒有記錄錯誤)編譯它。這產生了一個egg文件,我將其轉換爲whl文件& ran pip install gevent.whl -t .

我將結果代碼與我的lambda.zip捆綁在一起並上傳。這導致了一個新的錯誤module initialization error: lib/libptf77blas.a.gz: invalid ELF header

libptf77blas.a.gz是在lib文件夾中我lambda.zip文件。此文件夾包含幾個.so.a文件,這是我建立在AWS的Linux,而組裝numpyscipyPillow

據我所知,這是numpy的依賴。我不明白的部分是:我的功能使用numpy(大概libptf77blas.a.gz就好之前加入grequests

所以我想講講編譯gevent打破了依賴於我的其他binary - 依賴性庫,或gevent本身需要。 libptf77blas.a.gz,並在它發現被混淆。

我跑了.so文件gevent取決於ldd,但沒有提及libptf77blas.a.gz,但是,我是一個編譯福利局,所以這是難以定論。

我想實現並行上傳Grequests啓用,但我不清楚如何解決這個問題,或者不知道如何使用其他庫(我通常編寫JS,所以Python是第二語言)。

回答

1

這個問題完全是一個愚蠢的用戶錯誤從一個不相關的問題 - 按照OP中的步驟,你應該沒問題。

或者只是使用副本grequestsI posted on github。這是一個zip,其中grequests,geventgreenlet在Amazon Linux實例上編譯。它在我的Lambda Function工作得很好。

+0

感謝很多人!!!!!!!!!!! thanx很多的努力:) – vks

+0

即使是你自己的,你應該接受這個答案,因爲它是正確的。 – vks

+0

我知道我正在回覆一個過去的帖子/回答,但如果您碰巧擁有與Python 3.6相同類型的zip文件,我會非常感激:D – kilokahn