Получить модуль Python pdftotext, работающий на Lambda

#python #linux #amazon-web-services #pdftotext #poppler

#python #linux #amazon-веб-сервисы #pdftotext #poppler

Вопрос:

Мне нужно получить библиотеку pdftotext python для версии 3.8.6, работающую в функции AWS Lambda.

У меня установлена и запущена библиотека на AMI Amazon Linux, однако, когда я копирую файлы библиотеки в lambda, я получаю:

 [ERROR] ModuleNotFoundError: No module named 'pdftotext' Traceback (most recent call last)
  

Для функции lambda задан путь Python к site-packages каталогу, который, как я подтвердил, совпадает с экземпляром Amazon Linux. Другие библиотеки в том же каталоге могут быть импортированы нормально.

Пакет python является фактическим двоичным файлом (pdftotext.cpython-38-x86_64-linux-gnu.so ), и я предполагаю, что двоичный файл, сгенерированный на Amazon Linux AMI, несовместим с lambda? Так что, возможно, именно по этой причине он не может быть импортирован.

Я также попытался установить библиотеку в контейнер Amazon Linux docker (amazonlinux: 2018.03), но при импорте модуля я получаю следующую ошибку:

 ImportError: /root/package/lib/pdftotext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN7poppler8document18load_from_raw_dataEPKciRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_
  

У кого-нибудь это работает? Или какие-либо идеи о том, что я могу попробовать / какие шаги я могу предложить для устранения неполадок?

Комментарии:

1. В Lambda Python 3.8 используется Amazon Linux 2, а не Amazon Linux 1. Вы пробовали использовать разделяемые библиотеки из AL2?

2. Большое спасибо за это, это была проблема — пожалуйста, отправьте ответ, и я приму, в противном случае я отвечу сам.

3. Спасибо. Добавлен ответ.

Ответ №1:

На основе комментариев.

Проблема была вызвана использованием Amazon Linux 1 (AL1) вместо AL2. Это связано с тем, что среда Lambda для Python 3.8 основана на AL2, а не на AL1.

Решение состояло в том, чтобы использовать общие объекты, необходимые для pdftotext из AL2, а не из AL1.

Комментарии:

1. Привет, я столкнулся с той же проблемой, но я не знаю, как изменить мою среду lambda с al1 на al2, не могли бы вы помочь мне?