Как развернуть 'matplotlib', библиотеку Python, как лямбда-слой в AWS? - PullRequest
0 голосов
/ 09 июля 2019

Я попытался сжать и структурировать zip в python / lib / python3.7 / site-packages / {matplotlib here}, но там написано, что не удалось импортировать ft2font, который находится в matplotlib / init_ .py

Интересно, что в моем пакете нет других файлов с таким именем.Я попытался установить pip и установить pip3 на разных ОС, но пока не повезло

1 Ответ

0 голосов
/ 26 июля 2019

Я создал слой matplotlib для AWS lambda с помощью докера, выполнив эти шаги :

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

Обратите внимание, что этот скрипт удаляет numpy из слоя, что необходимо из-за ограничений размера одного лямбда-слоя. Так что вам нужно будет включить официальный слой NumPy / Scipy из AWS в вашей лямбда-функции.

Вы также можете сделать это без докера на небольшом экземпляре EC2. Вы можете найти полученный почтовый индекс здесь: https://github.com/ttor/aws_lambda_python37_layer_matplotlib

...