Installing awscli on Alpine - how to fix "ModuleNotFoundError: No module named 'six'"

Installing awscli on Alpine - how to fix "ModuleNotFoundError: No module named 'six'"

上下文

我有一个基于 postgres:11-alpine 的 docker 文件,该文件在过去(自上次构建以来可能已经几个月了)工作,具有以下定义:

FROM postgres:11-alpine

RUN apk update

# install aws cli
# taken from: https://github.com/anigeo/docker-awscli/blob/master/Dockerfile
RUN \
    apk -Uuv add groff less python py-pip && \
    pip install awscli && \
    apk --purge -v del py-pip && \
    rm /var/cache/apk/*

我最近尝试在升级到 postgres 12 之前重建它,但图像构建失败:

 ERROR: unsatisfiable constraints:
              python (missing):
                required by: world[python]

我猜 python 包现在不见了,因为 YOLO?不管怎样,我尝试通过将 docker 文件更改为:

来升级到 python3
RUN \
    apk -Uuv add groff less python3 py-pip && \
    pip install awscli && \
    apk --purge -v del py-pip && \
    rm /var/cache/apk/*

这看起来可行,但是当 运行 aws 命令时它失败并出现错误:

ModuleNotFoundError: No module named 'six'

问题

如何解决此问题,使 awscli 不会出现错误 No module named 'six'

问题似乎是删除py-pip引起的。 据我所知,apk del 的目的是减小最终 docker 图像的大小。我不确定为什么在文件使用 python 包时删除 py-pip 曾经有效。

因此以下内容现在似乎有效:

RUN \
    apk -Uuv add groff less python3 py-pip && \
    pip install awscli && \
    rm /var/cache/apk/*