Установка awscli на Alpine - как исправить ошибку «ModuleNotFoundError: нет модуля с именем 'six'» - PullRequest
0 голосов
/ 09 июля 2020

Контекст

У меня был файл докеров, основанный на postgres:11-alpine, который работал в прошлом (вероятно, через несколько месяцев после его последней сборки) со следующим определением:

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? Как бы то ни было, я попытался перейти на python3, изменив файл docker на:

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'?

1 Ответ

2 голосов
/ 09 июля 2020

Проблема, похоже, действительно вызвана удалением py-pip. Насколько мне известно, целью apk del было уменьшить размер окончательного docker изображения. Я не уверен, почему удаление py-pip раньше работало, когда файл использовал пакет python.

Итак, теперь, похоже, работает следующее:

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