AWS S3 Lambda Python脚本函数执行时报错AttributeError: module ‘PIL‘ has no attribute ‘,Image‘cannot import name '_imaging' from 'PIL'
背景
代码示例如下
1 2 3 4 5 6 7 8 9 10 11 | import PIL def add_image( self , tag, img, step): summary = Summary() bio = BytesIO() if type (img) = = str : img = PIL.Image. open (img) elif type (img) = = PIL.Image.Image: pass else : img = scipy.misc.toimage(img) |
python脚本在本地可以执行,但是放到S3的Lambda中却总是报这个错
1 | AttributeError: module ‘PIL‘ has no attribute ‘,Image‘cannot import name '_imaging' from 'PIL' |
原因
原因是Lambda的Layer层,添加的脚本执行环境eve,打包压缩的zip包有问题,没有按照标准的解压流程去执行。
我一开始是直接把PIL和Pillow包直接压缩打成了一个zip包,这种就少了一些基础的执行环境依赖,标准的打包流程如下。
1 2 3 4 5 6 7 8 9 10 11 | mkdir ~ / create_layer python3 - m venv create_layer source create_layer / bin / activate pip install pillow deactivate mkdir - p ~ / pil / python cd ~ / pil cp - r ~ / create_layer / lib / python3. 9 / site - packages / * . / python / zip - r pil. zip python |
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
首发链接:https://www.cnblogs.com/lingyejun/p/18156503
参考链接
https://github.com/keithrozario/Klayers/issues/154
https://docs.aws.amazon.com/lambda/latest/dg/packaging-layers.html#packaging-layers-paths
https://docs.aws.amazon.com/lambda/latest/dg/python-layers.html#python-layer-packaging
出处:http://www.cnblogs.com/lingyejun/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署