如何为 AWS Lambdas 安装 Numpy 和 Pandas?

exa*_*xan 3 python numpy amazon-web-services pandas aws-lambda

问题: 我想在我的 AWS lambda 函数中使用 Numpy 和 Pandas。我正在使用 PyCharm 在 Windows 10 上工作。我的函数在本地机器上编译并运行良好,但是,一旦将其打包并部署在 AWS 上,它就会在导入 numpy 和 pandas 包时出现错误。我尝试重新安装两个软件包,然后重新部署,但是错误仍然相同。

StackOverFlow 解决方案: 其他人也有类似的问题,其他用户表示这主要是兼容性问题,因为 Python 库是在 Windows 上编译的,而 AWS Lambda 在 linux 机器上运行。

问题: 在 Windows 10 上为 AWS 创建部署包的最佳方法是什么?有没有办法在通过 PIP 安装软件包时指定目标平台。显然 pip 中有一个带有标签 --platform 的选项,但我不知道如何使用它。有帮助吗?

edi*_*dna 6

就像通常有不止一种方法可以找到解决方案。

恕我直言,首选方式是使用 AWS lambda 层,因为它将功能代码与依赖项分开。这里解释基础知识。

  1. 获取所有依赖项。就像您正确提到的那样,必须为 AMI Linux 编译 pandas 和 numpy。这可以通过以下工具完成:“无服务器 python 要求”或使用基于此图像的 docker 容器。可以在此处找到更详细的说明。
  2. 将依赖项放在名为python.
  3. 压缩整个文件夹,例如使用预装的 Windows 压缩工具。
  4. 将 zip 文件作为层上传到 AWS:转到 AWS Lambda,从左侧选择层和“创建新层”。
  5. 保存图层后,转到您的 Lambda 函数并选择“图层”。单击“添加图层”选择您新创建的图层并单击保存。现在您的函数不应再出现导入错误。


kei*_*rio 5

Numpy 和 Pandas 都可以作为公共层使用: https: //github.com/keithrozario/Klayers

正如您提到的,在 Windows 上构建它很困难,通常您需要 Linux 系统来构建 python 需求,或者在 docker 容器中构建它。

我不是 Windows 10 用户,但我猜您可以使用 WSL(适用于 Linux 的 Windows 子系统)在本地构建需求并在将它们用作层之前将其压缩。不过,为了省事,我宁愿只使用前面提到的公共层。

全面披露:我拥有发布图层的存储库。这是一个免费项目——但有一个缺点。如果升级了新版本的包(或其依赖项之一),我会删除旧层。一般来说,如果您使用最新的图层版本,则可以保证至少 30 天后图层将被删除。使用已删除图层的函数仍然可以工作,但您无法在旧图层上部署新版本的函数。

希望这能说明问题。