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

Docker删除临时构建依赖后Pillow未安装报错如何解决?

问题根因

Pillow编译时需要zlib-dev、jpeg-dev这类带dev后缀的头文件包,但运行时也需要对应的基础动态库包zlib、jpeg。你当前的配置把所有编译相关的依赖都放到了.tmp-deps临时组中,执行apk del .tmp-deps时会把Pillow运行必须的动态库也一并删除,导致Python导入PIL模块失败,Django因此抛出Pillow未安装的错误。

解决方案

调整Dockerfile的依赖安装逻辑,把运行时必须的永久依赖和编译用的临时依赖拆分,仅删除编译阶段的临时依赖即可,同时还能保证镜像体积最小化:

  • 将zlib、jpeg这两个Pillow运行必需的依赖,和postgresql-client一起作为永久依赖安装,不加入临时依赖组
  • 临时依赖组仅保留编译时需要的zlib-dev、jpeg-dev等带dev后缀的头文件包,安装完pip依赖后直接删除即可

修改后的Dockerfile对应段如下:

RUN python -m venv /py && \
/py/bin/pip install --upgrade pip && \
# 安装永久运行时依赖,不会被删除
apk add --update --no-cache postgresql-client zlib jpeg && \
# 安装仅编译阶段需要的临时依赖
apk add --update --no-cache --virtual .tmp-deps \
build-base postgresql-dev musl-dev linux-headers \
python3-dev zlib-dev jpeg-dev gcc && \
/py/bin/pip install -r /requirements.txt && \
# 仅删除临时构建依赖,保留运行时依赖
apk del .tmp-deps
验证方法

镜像构建完成后,可进入容器执行以下命令验证Pillow是否正常可用:
/py/bin/python -c "from PIL import Image; print('Pillow加载成功')"
如果无报错输出即为配置生效。

内容的提问来源于stack exchange,提问作者Sariyanta Made

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:36:05