Невозможно импортировать греки для AWS Lambda

Я запускаю AWS Lambda-скрипт с Python 2.7 во время выполнения. Однако всякий раз, когда он инициализируется, он начинает импортировать 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 ответа

Решение

Я должен был построить gevent от src на экземпляре Amazon Linux. Я положил результирующие файлы в zip если они кому-то нужны - просто включите их в загруженную лямбду zip и ты должен вести себя как босс.

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

Поскольку Gevent основан на libev, он, скорее всего, компилирует двоичные файлы при установке через pip.

Необходимо убедиться, что вы развертываете двоичные файлы, скомпилированные для Amazon Linux, если вы хотите, чтобы они выполнялись в AWS Lambda. Вы можете сделать это, собрав свой пакет развертывания на экземпляре EC2 под управлением Amazon Linux.

Также проверьте этот ответ и этот учебник.

Другие вопросы по тегам