首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Lambda:无法从'PIL‘导入名称'_imaging’

AWS Lambda:无法从'PIL‘导入名称'_imaging’
EN

Stack Overflow用户
提问于 2019-07-25 16:15:20
回答 5查看 4K关注 0票数 6

我目前正在尝试运行这个AWS Lambda入门教程:https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg-python

但是,我总是收到一个错误:

代码语言:javascript
运行
复制
{
  "errorMessage": "Unable to import module 'CreateThumbnail': cannot import name '_imaging' from 'PIL' (/var/task/PIL/__init__.py)",
  "errorType": "Runtime.ImportModuleError"
}

日志输出

代码语言:javascript
运行
复制
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中的内容。你有什么想法,为什么我仍然得到这个错误?

EN

回答 5

Stack Overflow用户

发布于 2021-04-06 02:06:08

使用python 3.6而不是3.7只会给我一个不同的错误。由于AWS lambda的构建方式,它似乎缺少一些组件。

对我有效的5分钟解决方案:

  • 为您的lambda在

中运行的区域选择文件

  • 获取最新枕头版本

的ARN

在您的Lambda上的

  • 控制台中,单击"Layers (0)"

  • 添加新层:

保存所有内容,它就会正常工作!但是,您必须确保重新部署lambda会以某种方式保留该层。

完全归功于这篇拯救生命的博客文章https://medium.com/@derekurizar/aws-lambda-python-pil-cannot-import-name-imaging-11b2377d31c4

票数 5
EN

Stack Overflow用户

发布于 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镜像。

票数 4
EN

Stack Overflow用户

发布于 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。然后,只需运行以下命令:

代码语言:javascript
运行
复制
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调整为您想要的任何功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57197283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档