AWS lambda 无法导入模块“lambda_function”:没有名为 PIL 的模块

eph*_*ral 6 amazon-s3 amazon-web-services python-imaging-library aws-lambda amazon-rekognition

我正在使用 lambda 函数SearchFacesbyimage 我正在使用这个文档 https://aws.amazon.com/blogs/machine-learning/build-your-own-face-recognition-service-using-amazon-rekognition/

我在哪里使用这个进行比较

from PIL import Image
Run Code Online (Sandbox Code Playgroud)

我收到这个错误 Unable to import module 'lambda_function': No module named PIL

Mau*_*rma 1

您收到此错误是因为 Python 2.x 的 PIL 或 3.x 的 PILLOW 不是 python lambda 环境中可用的标准库。

要使用这样的库,您必须为您需要的所有库以及要部署的Python代码创建一个自定义部署包。这个包可以在docker中或使用EC2实例轻松制作。

以下是如何在EC2上制作部署包的过程:

  1. 假设您的文件名为CreateThumbnail.py

  2. 如果您的源代码位于本地主机上,请将其复制到 EC2。

    scp -i key.pem /path/to/my_code.py ec2-user@public-ip-address:~/CreateThumbnail.py

  3. 通过 SSH 连接到 64 位 Amazon Linux 实例。

    ssh -i key.pem ec2-user@public-ip-address

  4. 使用以下步骤安装 Python 3.6 和 virtualenv:

    a) sudo yum install -y gcc zlib zlib-devel openssl openssl-devel

    b) wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

    c) tar -xzvf Python-3.6.1.tgz

    d) cd Python-3.6.1 && ./configure && make

    e) sudo make install f sudo /usr/local/bin/pip3 install virtualenv

  5. 选择通过pip3安装的虚拟环境

    /usr/local/bin/virtualenv ~/shrink_venv

    源〜/shrink_venv/bin/activate

  6. 在虚拟环境中安装库

    pip 安装枕头

    pip 安装 boto3

  7. 将 lib 和 lib64 站点包的内容添加到 .zip 文件中。请注意,以下步骤假设您使用 Python 运行时版本 3.6。如果您使用的是 2.7 版本,则需要进行相应更新。

    cd $VIRTUAL_ENV/lib/python3.6/site-packages

    zip -r9 ~/CreateThumbnail.zip

    注意- 要包含所有隐藏文件,请使用以下选项:

    zip -r9 ~/CreateThumbnail.zip

  8. 将 python 代码添加到 .zip 文件中

    光盘~

    zip -g CreateThumbnail.zip CreateThumbnail.py

现在CreateThumbnail.zip是您的自定义部署包,只需将其复制到 s3 并将其上传到您的 lambda 即可。

此示例取自官方 AWS 文档: https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html