【问题标题】:AWS Lambda (python2.7): Adding matplotlib as a layerAWS Lambda (python2.7):将 matplotlib 添加为层
【发布时间】:2019-03-22 01:14:44
【问题描述】:

我在尝试将matplotlib 作为layer 添加到我的 Python 2.7 AWS Lambda 函数时遇到问题。

Lambda execution environment 上,我正在尝试安装必要的库并按照here 的描述创建一个层。

我尝试过的事情:

首先,我pip installed matplotlib 进入虚拟环境,并复制了 lib 和 lib64 下的 site-packages 的内容。执行 lambda 函数时,我得到一个 No module named pkg_resources 异常。我还尝试使用 --target 选项安装所有依赖项到同一个文件夹。结果是一样的。

我读到here 可能是由于 setuptools 包过时造成的。当我更新 pip install --upgrade setuptools 然后尝试安装 matplotlib 时,我开始收到以下异常:

pkg_resources.DistributionNotFound: The 'pip==9.0.3' distribution was not found and is required by the application 

最后我想到了用

安装 matplotlib
sudo yum install python-matplotlib

然后按照here 的描述收集所需的包。但这并没有使 matplotlib 可以从 python shell 中导入,所以我猜它不能作为 Lambda 层工作。

感谢您的帮助。

P.S:在 AWS re:invent 上,这正是 demoed,但没有关于会话的详细信息:/

【问题讨论】:

    标签: python-2.7 matplotlib aws-lambda amazon-linux


    【解决方案1】:

    我在其他模块(例如加密和我自己的自定义模块)中遇到了类似的问题。我发现问题确实是缺乏好的文档。

    在我的例子中,我使用 --target 选项从目标目录中压缩所有依赖项,因此所有依赖项目录都位于 zip 文件的顶层。这适用于直接 Lambda 部署,但是当您想要使用层时,该层将部署到 Lambda 容器的 /opt 文件夹中,因此您需要使用名为“python”的顶级目录创建 zip 文件这样您的依赖项就可以位于 /opt/python/。

    mkdir python && cd python && pip install pyopenssl crypto --target . && cd .. && zip -r9 ./lambda_layer.zip python/
    

    它确实出现在文档中,但很简短,很容易错过。这个页面帮助了我:https://medium.com/@adhorn/getting-started-with-aws-lambda-layers-for-python-6e10b1f9a5d

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2021-09-02
      相关资源
      最近更新 更多