我正在运行带有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
,但它能够找到其他非默认库而没有问题。
答案 0 :(得分:3)
由于Gevent基于libev,因此很可能在通过pip安装时编译二进制文件。
如果您希望它们在AWS Lambda中可执行,您需要确保部署为Amazon Linux编译的二进制文件。您可以通过在运行Amazon Linux的EC2实例上构建部署包来实现此目的。
另请查看this answer和this tutorial。
答案 1 :(得分:3)
我必须在Amazon Linux实例上从gevent
构建src
。如果有人需要,我会将结果文件放在zip
中 - 只需将它们包含在您上传的Lambda zip
中,您应该像老板一样同时进行。