AWS Lambda中导入PIL模块报错:cannot import name '_imaging' from 'PIL' 问题求助
AWS Lambda中导入PIL模块报错:cannot import name '_imaging' from 'PIL' 问题求助
真的要被逼疯了——我知道社区里有类似场景的问题,但试了好几种解决方案都不管用,所以只能自己来求助,把完整背景都列出来。
我在AWS上搭了个超简单的流程:把图片传到S3桶,Lambda触发后处理图片,再传到另一个桶。
所有配置(Terraform、Python代码)都弄好了,但每次Lambda触发都会报这个错:
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': cannot import name '_imaging' from 'PIL' (/var/task/PIL/__init__.py)
需要重点说明的情况:
- 我是在Windows上开发的(再也不会这么干了!!!)
- 试过多个Python运行时版本:3.13、3.12、3.10、3.9
- Lambda架构是x86_64
我的Python代码开头就一行,就是这行搞出大问题:
from PIL import Image
我已经尝试过的方法:
- 切换Python运行时版本(当然试过了)
- 创建包文件夹,在里面安装Pillow,然后和Lambda代码一起打包压缩
- 使用Lambda层(看起来是最流行、简单快捷的方案),用了对应的ARN:
arn:aws:lambda:eu-west-2:770693421928:layer:Klayers-p39-pillow:1 - 用Docker运行Amazon Linux容器(命令是
docker run -it --rm -v ${PWD}:/app --workdir /app amazonlinux:2 bash),在里面创建包文件夹、安装Pillow依赖,再和代码一起打包压缩
不管试哪种方法,都会报上面那个错。
补充一句:这本来只是个小项目,预计花一两晚搞定,所以最好不要太复杂的解决方案(除非真的没别的办法了)。
如果有人能复现我的场景,然后找到解决办法,我会非常感激。哪怕只是有人复现后也遇到同样的问题,我也谢天谢地——至少说明我不是在瞎折腾。
谢谢大家!
备注:内容来源于stack exchange,提问作者user8981199
相关产品推荐
相关产品推荐

