#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, не могли бы вы помочь мне?