获取在Lambda上运行的pdftotext Python模块

问题描述

我需要为在AWS Lambda函数中运行的3.8.6获取pdftotext python库。

我已在Amazon Linux AMI上安装并运行该库,但是将库文件复制到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_

有人工作吗?或关于我可以尝试的事情/可以解决的步骤的任何想法?

解决方法

基于评论。

此问题是由使用Amazon Linux 1(AL1)而不是AL2引起的。这是因为 Python 3.8的Lambda环境基于AL2 ,而不是基于AL1。

解决方案是使用AL2(而不是AL1)pdftotext所需的共享对象。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...