Python Lambda "Nested" 层

Python Lambda "Nested" layers

我有一个函数,其中有一个层,其中有一个导入。

当 运行 时,我收到错误消息“没有名为 xhtml2pdf 的模块

我有 2 层可以导入,一层用于 PDF 脚本,一层用于 xhtml2pdf 模块,我真的不想同时导入这两个层

我在层中导入的函数是:

from PDF import convert_html_to_pdf

在层内我有导入

from xhtml2pdf import pisa

我是否需要使用层将包添加到我的主函数中,或者我可以将层“嵌套”在彼此内部吗?

或者,有没有办法将软件包安装在与我的 PDF.py 相同的层内?

改变导入库的位置并不能解决问题,它只会改变错误发生的位置。

您必须使用 pip 或 conda 安装 xhtml2pdf 到您的计算机(或您 运行 该代码的位置)。导入库是python运行时间的事情。

一般来说,你应该尝试让lambda层特定于lambda函数,这意味着lambda函数和层具有一对一的关系。随着 lambda 函数的变化,该层也会发生变化以容纳更多或更少的所需库。

虽然 lambda 层确实可以跨不同的 lambda 函数重用,但是层的一对多关系使得有效管理 lambda 函数变得更加棘手;该层也不太可能被不同的 lambda 函数按原样重新使用,这意味着您需要更多层。你会明白为什么这会变得痛苦。

这意味着最好的解决方案是将函数所需的所有 依赖项安装到单个层中。您可以找到有关如何执行此操作的完整说明 here