问题描述
我需要为在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
所需的共享对象。