【问题标题】:"Unable to import module 'lambda_function': No module named 'pdf2image'"“无法导入模块‘lambda_function’:没有名为‘pdf2image’的模块”
【发布时间】:2021-02-22 15:38:09
【问题描述】:

我一直在使用 Lambda 将 pdf 转换为 png,并使用 pdf2image 库为我的 Lambda 创建一个图层。我尝试了许多不同的方法,但似乎对我不起作用。

"errorMessage": "无法导入模块 'lambda_function': 没有名为 'pdf2image' 的模块", "errorType": "Runtime.ImportModuleError"

感谢您的帮助!

谢谢

【问题讨论】:

标签: aws-lambda python-packaging aws-lambda-layers


【解决方案1】:

因此,您希望包含“pdf2image”库以供您的 lambda 引用。要创建一个层,您需要创建一个包含该代码的目录结构,然后压缩整个目录。可能如下:

/python
    /pdf2image
        __init__.py
        pdf2image.py
        ...

压缩后,zip 文件必须包含“python”文件夹,并且在其中放置您的代码。如果您这样做并且还将您的公共代码安装为一个包,您可以使用相同的导入将其导入本地代码和 lambdas。

我所做的是使用 pip install 安装到某个文件位置 - 然后我将其压缩到一个层中。例如,如果我想为 pdf2image 库制作一个图层,我可能会这样做

pip install --target=c:\myLayers\python pdf2image

这会将库文件安装到我指定的位置,这样就很容易知道要压缩什么(只需创建一个包含“python”目录的 zip)。

那么当然要确保在 lambda 中引用层(按特定版本)。

【讨论】:

  • 谢谢!这是可行的,但现在我有不同的问题,“errorMessage”:“无法获取页数。poppler 是否已安装并在 PATH 中?”,“errorType”:“PDFInfoNotInstalledError”
  • 您可能想为这个新问题提出一个新问题并发布完整的详细信息。如果我的回复回答了您的原始帖子,您可以单击复选标记选项接受它。