Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.3k views
in Technique[技术] by (71.8m points)

amazon web services - AWS lambda Unable to import module 'lambda_function': No module named PIL

I am using a lambda function of SearchFacesbyimage And I am using this doc https://aws.amazon.com/blogs/machine-learning/build-your-own-face-recognition-service-using-amazon-rekognition/

where for comparison I am using this

from PIL import Image

And I am getting this error Unable to import module 'lambda_function': No module named PIL

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You are getting this error as PIL for Python 2.x or PILLOW for 3.x are not standard libraries available in python lambda environment.

To use such a library , you have to make a custom deployment package of all libraries you need as well as the python code you want to deploy. This package can be made easily either in docker or by using EC2 instance .

here is the procedure how you will make that deployment package on EC2 :

  1. Suppose you have your file named CreateThumbnail.py

  2. If your source code is on a local host, copy it over to EC2.

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

  3. Connect to a 64-bit Amazon Linux instance via SSH.

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

  4. Install Python 3.6 and virtualenv using the following steps:

    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 installfsudo /usr/local/bin/pip3 install virtualenv

  5. Choose the virtual environment that was installed via pip3

    /usr/local/bin/virtualenv ~/shrink_venv

    source ~/shrink_venv/bin/activate

  6. Install libraries in the virtual environment

    pip install Pillow

    pip install boto3

  7. Add the contents of lib and lib64 site-packages to your .zip file. Note that the following steps assume you used Python runtime version 3.6. If you used version 2.7 you will need to update accordingly.

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

    zip -r9 ~/CreateThumbnail.zip

    note- To include all hidden files, use the following option:

    zip -r9 ~/CreateThumbnail.zip

  8. Add your python code to the .zip file

    cd ~

    zip -g CreateThumbnail.zip CreateThumbnail.py

Now CreateThumbnail.zip is your custom deployment package , just copy it to s3 and upload it to your lambda.

This example is taken from official AWS documentation at https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...