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

Мне нужно, чтобы библиотека Python pdftotext для 3.8.6 работала в функции AWS Lambda.

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

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

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

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

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

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

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


person Chris McKinnel    schedule 20.10.2020    source источник
comment
Lambda Python 3.8 использует Amazon Linux 2, а не Amazon Linux 1. Пробовали ли вы использовать общие библиотеки из AL2?   -  person Marcin    schedule 20.10.2020
comment
Большое спасибо за это, это была проблема - пожалуйста, напишите ответ, и я приму его, иначе я отвечу сам.   -  person Chris McKinnel    schedule 20.10.2020
comment
Спасибо. Добавлен ответ.   -  person Marcin    schedule 21.10.2020


Ответы (1)


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

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

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

person Marcin    schedule 20.10.2020
comment
Привет, я столкнулся с той же проблемой, но я не знаю, как изменить мою лямбда-среду с al1 на al2, не могли бы вы мне помочь? - person Juan Pedro Pont Vergés; 05.07.2021