我已经尝试在 python/lib/python3.7/site-packages/{matplotlib here} 中压缩和构建 zip 但它说无法导入 matplotlib/ init_.py中的ft2font
有趣的是,我的包中没有其他具有该名称的文件。我在不同的操作系统上尝试了 pip install 和 pip3 install 但没有运气
我已经尝试在 python/lib/python3.7/site-packages/{matplotlib here} 中压缩和构建 zip 但它说无法导入 matplotlib/ init_.py中的ft2font
有趣的是,我的包中没有其他具有该名称的文件。我在不同的操作系统上尝试了 pip install 和 pip3 install 但没有运气
我按照以下步骤使用 docker 为 AWS lambda 创建了一个 matplotlib 层:
sudo docker pull amazonlinux
sudo docker run -it amazonlinux:latest /bin/bash
# inside container
yum -y install python37 zip
python3 -m venv python
source python/bin/activate
pip3 install matplotlib
deactivate
rm -rf python/{bin,include,lib64,pyvenv.cfg} python/lib/python3.7/site-packages/{__pycache__,easy_install.py,numpy*,pip*,pkg_resources,setuptools*}
zip -r aws_lambda_python37_layer_matplotlib.zip python/
# in other terminal, copy file from container to host
CONTAINER_ID=$(sudo docker ps|grep amazonlinux|cut -d " " -f1)
sudo docker cp ${CONTAINER_ID}:/aws_lambda_python37_layer_matplotlib.zip .
# exit container
exit
请注意,由于单个 lambda 层的大小限制,此脚本会从层中删除必要的 numpy。因此,您还需要在 lambda 函数中启用 AWS 的官方 numpy/scipy 层。
您也可以在没有 docker 的情况下在小型 EC2 实例上执行此操作。您可以在此处找到生成的 zip:https ://github.com/ttor/aws_lambda_python37_layer_matplotlib