【问题标题】:Installing matplotlib from wheel for aws lambda从轮子为 aws lambda 安装 matplotlib
【发布时间】:2020-11-18 03:19:05
【问题描述】:

我想使用 matplotlib 在 AWS Lambda 函数中创建图像文件。由于我的系统运行的 Linux 版本与 Lambda 使用的不同,因此我收到了从 matplotlib 网站下载轮子(.whl 文件)的指导。我下载了matplotlib-3.3.3-cp36-cp36m-manylinux1_x86_64.whl https://files.pythonhosted.org/packages/d2/43/2bd63467490036697e7be71444fafc7b236923d614d4521979a200c6b559/matplotlib-3.3.3-cp36-cp36m-manylinux1_x86_64.whl

到我正在创建我的部署包的文件夹。

首先,我有很多轮文件,不清楚这是否正确。其次,它不起作用。

然后我用命令打包了轮子

wheel unpack *.whl

这产生了一个包含 matplotlib 包的目录。

我的主要功能是

import matplotlib.pyplot

def lambda_handler(event, context):
return

我下达了命令

zip -r my-deployment-package.zip .
zip -g my-deployment-package.zip lambda_function.py

并将 zip 文件上传到 s3 存储桶。然后我使用“aws lambda update-function-code...”命令来更新 lambda 函数。部署和测试时,出现错误:“无法导入模块 'lambda_function': No module named 'matplotlib'”

考虑到 matplotlib 模块不存在(也许我需要对 whl 文件做一些事情或者把它放在不同的地方),我激活了我的虚拟环境并启动了 python 解释器。尝试导入 matplotlib,我得到“找不到模块”。尝试在matplotlib目录下使用pip install,报错没有setup.py:

$ pip install --no-index --find-links=. matplotlib-3.3.3/
ERROR: Directory 'matplotlib-3.3.3/' is not installable. Neither 'setup.py' nor 'pyproject.toml' found.

如何让模块被识别?

【问题讨论】:

    标签: matplotlib aws-lambda python-wheel


    【解决方案1】:

    借助 Serverless 框架和 Docker,您可以在一分钟内构建一个层。在post 中查看我的答案。

    如果您赶时间,请随意获取我为您打包的这个 lambda 层。它与 Python 3.8 兼容。这是gdrive下载link

    【讨论】:

    • 看了你的帖子,不太明白。对 Lambda 层一无所知。 Serverless 是 AWS 的东西,Docker 的应用程序还是什么?我会谷歌。我对 matplotlib 的尝试旨在作为概念证明,会有其他依赖项,例如 Pandas
    • 我看到 Lamda 的大小限制为 250 MB,解压缩。对于 matplotlib,即 180 MB。因为我也需要 Pandas,所以我认为这个配额限制扼杀了我的想法
    • 另一种方法是将您的库放入 EFS,并让 lambda 从那里导入包。
    【解决方案2】:

    无需构建自己的层; https://github.com/keithrozario/Klayers 提供的大量可用 - 您只需将它们包含在您的 Lambda 配置中。

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 2021-10-16
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      相关资源
      最近更新 更多