【问题标题】:Pillow is not installed after removing .temp-builds删除 .temp-builds 后未安装 Pillow
【发布时间】:2021-10-29 09:42:01
【问题描述】:

错误

ERRORS:
app_1  | core.Page.image: (fields.E210) Cannot use ImageField because Pillow is not installed.

如果我在安装 requirements.txt 后删除 .temp-builds,则似乎检测到 Pillow 未安装在我的 docker 容器中。我这样说是因为如果我删除了“apk del .tmp-deps”,错误就会消失。但是,我想删除 .tmp-builds,因为我知道让 docker 容器尽可能精简是最佳实践。

Dockerfile

RUN python -m venv /py && \
/py/bin/pip install --upgrade pip && \
apk add --update --no-cache postgresql-client && \
apk add --update --no-cache --virtual .tmp-deps \
build-base postgresql-dev musl-dev linux-headers \
python3-dev zlib-dev jpeg-dev gcc musl-dev && \
/py/bin/pip install -r /requirements.txt && \
apk del .tmp-deps

requirements.txt

django>=3.2.3,<3.3
psycopg2>=2.8.6,<2.9
uWSGI>=2.0.19.1,<2.1
djangorestframework >=3.12.4, <3.20.0
Pillow >= 8.4.0, <8.5.0

任何指针都会非常感谢。

【问题讨论】:

    标签: django docker python-imaging-library alpine


    【解决方案1】:

    好的。查看 dockerfile 后,我看到 postgresql-client 不在 e--virtual .tmp-deps 中。这意味着,某些依赖项必须保留在容器中才能使某些包工作(这对我来说并不明显)。

    我从这里学到的是,我需要将 jpeg-dev 包含到 .tmp-deps 的行中。

    更新的 Dockerfile

    RUN python -m venv /py && \
    /py/bin/pip install --upgrade pip && \
    apk add --update --no-cache postgresql-client jpeg-dev && \
    apk add --update --no-cache --virtual .tmp-deps \
        build-base postgresql-dev musl-dev linux-headers python3-dev  gcc zlib-dev  && \
    /py/bin/pip install -r /requirements.txt && \
    apk del .tmp-deps && \
    

    【讨论】:

      猜你喜欢
      • 2015-12-06
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 2021-01-09
      相关资源
      最近更新 更多