我目前正在尝试运行这个AWS Lambda入门教程:https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg-python
但是,我总是收到一个错误:
{
"errorMessage": "Unable to import module 'CreateThumbnail': cannot import name '_imaging' from 'PIL' (/var/task/PIL/__init__.py)",
"errorType": "Runtime.ImportModuleError"
}
日志输出
START RequestId: fefba1d1-443c-4617-a5ad-c3aac19e5591 Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'CreateThumbnail': cannot import name '_imaging' from 'PIL' (/var/task/PIL/__init__.py)
END RequestId: fefba1d1-443c-4617-a5ad-c3aac19e5591
REPORT RequestId: fefba1d1-443c-4617-a5ad-c3aac19e5591 Duration: 1.52 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 71 MB
为了从lambci/docker-lambda
镜像构建我的.zip,我做到了这一步。但这并没有解决我的问题。
下面是我的.zip中的内容。你有什么想法,为什么我仍然得到这个错误?
发布于 2021-04-06 02:06:08
使用python 3.6而不是3.7只会给我一个不同的错误。由于AWS lambda的构建方式,它似乎缺少一些组件。
对我有效的5分钟解决方案:
中运行的区域选择文件
的ARN
在您的Lambda上的
保存所有内容,它就会正常工作!但是,您必须确保重新部署lambda会以某种方式保留该层。
完全归功于这篇拯救生命的博客文章https://medium.com/@derekurizar/aws-lambda-python-pil-cannot-import-name-imaging-11b2377d31c4
发布于 2020-07-15 00:44:33
尽管我尝试了所有这些步骤,但我仍然面临错误。最终,我找到了我的问题:)
对我来说,AWS Lamda运行时中的Python版本是python 3.7.7。我使用Python3.6安装了Pillow。似乎与python的不同版本的兼容性有一些问题。
因此,要解决这个问题,要么将AWS lambda运行时更改为python3.6(这就是我尝试并完成的工作)。
或者,您也可以尝试安装python 3.7.7的pillow,并将其复制到lambda。
由于cython存在问题,更好的方法是使用amazon linux在EC2中安装包,或者使用AWS AMI docker镜像。
发布于 2019-11-28 16:39:14
为了回答@hax评论,我在这里结束了这个解决方案:https://github.com/marcmetz/Create-AWS-Lambda-Function-with-Docker
我面临的问题是在我的Mac上安装的Python与在AWS上安装的Python不同。为了使用我的解决方案,在存储库中安装Docker和cd
,并将您的包添加到requirements.txt
。然后,只需运行以下命令:
docker build -t fbprophet . && \
docker run --rm -v $PWD:/export \
fbprophet cp upload-to-s3.zip /export
这将(1)创建一个基于this的Docker容器,(2)安装在requirements.txt中定义的所有包和依赖项,然后(3)在存储库文件夹中返回一个.zip文件。该.zip文件可用于Lambda函数。
确保还将lambda_function.py
调整为您想要的任何功能。
https://stackoverflow.com/questions/57197283
复制相似问题