2016-12-27 132 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