无法导入AWS Lambda的请求

时间:2016-03-27 06:31:38

标签: python amazon-web-services gevent aws-lambda grequests

我正在运行带有Python 2.7运行时的AWS Lambda脚本。但是,无论何时初始化它都会开始导入grequests库,但由于它依赖于gevent而失败:

Gevent is required for grequests.

它似乎成功找到了grequests库(因为它知道它需要gevent)但是失败了。

到目前为止我尝试过:

pip install --ignore-installed grequests -t .

pip install --ignore-installed grequests -t ./lib

pip install --ignore-installed gevent -t .

pip install --ignore-installed gevent -t ./lib

然后我按照此处的说明压缩目录的内容并上传到AWS:http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

似乎无论我尝试什么,Lambda都无法找到gevent,但它能够找到其他非默认库而没有问题。

2 个答案:

答案 0 :(得分:3)

由于Gevent基于libev,因此很可能在通过pip安装时编译二进制文件。

如果您希望它们在AWS Lambda中可执行,您需要确保部署为Amazon Linux编译的二进制文件。您可以通过在运行Amazon Linux的EC2实例上构建部署包来实现此目的。

另请查看this answerthis tutorial

答案 1 :(得分:3)

我必须在Amazon Linux实例上从gevent构建src。如果有人需要,我会将结果文件放在zip中 - 只需将它们包含在您上传的Lambda zip中,您应该像老板一样同时进行。

https://github.com/brandonmp/aws-lambda-grequests