在 Lambda 上获取 pdftotext Python 模块 运行

Get pdftotext Python module running on Lambda

我需要在 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),我假设二进制文件是在亚马逊上生成的 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_

有人成功了吗?或者关于我可以尝试的事情/我可以 table 进行故障排除的步骤的任何想法?

根据评论。

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

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