You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda函数中管理Pillow包及解决PIL缺失报错

在AWS Lambda中正确安装Pillow(PIL)的解决方法

Lambda运行环境基于特定的Amazon Linux系统,直接上传本地安装的Pillow包常因系统架构、依赖库不兼容导致无法识别,以下是几种可靠的解决方式:

方法1:使用Lambda层(推荐)

  • 借助Docker模拟Lambda环境构建兼容的Pillow包:
    1. 拉取对应Python版本的Lambda官方镜像(以Python 3.11为例):docker pull public.ecr.aws/sam/build-python3.11
    2. 运行容器并挂载本地目录:docker run -v "$PWD":/var/task -it public.ecr.aws/sam/build-python3.11 /bin/bash
    3. 在容器内将Pillow安装到指定层目录:pip install pillow>=8.1.1 -t python/lib/python3.11/site-packages/(替换路径中的Python版本为你的函数使用版本)
    4. 退出容器,将python目录打包为zip:zip -r pillow-layer.zip python/
    5. 登录AWS控制台,进入Lambda「层」页面上传该zip创建层,再将层关联到目标Lambda函数。

方法2:直接打包兼容依赖到函数部署包

  • 同样用Docker构建兼容部署包:
    1. 进入你的Lambda代码目录,运行对应环境的容器:docker run -v "$PWD":/var/task -it public.ecr.aws/sam/build-python3.11 /bin/bash
    2. 在容器内将Pillow安装到当前代码目录:pip install pillow>=8.1.1 -t .
    3. 退出容器,将代码和依赖一起打包:zip -r lambda-deploy.zip .
    4. 上传该zip包到你的Lambda函数。

方法3:使用AWS SAM CLI构建(适合复杂项目)

  • 在SAM项目的requirements.txt中添加pillow>=8.1.1
  • 运行构建命令自动生成兼容依赖:sam build --use-container
  • 部署到Lambda:sam deploy --guided

排查要点

  • 在函数代码中添加import PIL; print(PIL.__version__),验证Pillow是否被正确识别及版本是否达标
  • 检查部署包目录结构:Python依赖需放在根目录(直接打包时)或lib/pythonX.X/site-packages/(层时),Lambda才能加载
  • 禁止直接上传Windows/macOS本地安装的Pillow包,系统架构差异会导致无法运行

内容的提问来源于stack exchange,提问作者Rushabh Sorathiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:07:39