Если я создаю самый простой образ докера на основе Alpine, который включает в себя Python:
FROM python:3.7-alpine3.9
Я могу успешно ввести его и убедиться, что установлена версия 3.7:
/ # python --version
Python 3.7.3
/ # python3 --version
Python 3.7.3
Однакоесли я устанавливаю некоторые пакеты, для которых требуется Python3, например python3-dev
(что требуется для других пакетов) или сам Python3, Alpine не использует версию 3.7, но использует 3.6 по какой-то причине, которую я не понимаю:
/ # apk add python3-dev
(1/3) Installing pkgconf (1.6.0-r0)
(2/3) Installing python3 (3.6.8-r2)
(3/3) Installing python3-dev (3.6.8-r2)
Executing busybox-1.29.3-r10.trigger
OK: 108 MiB in 38 packages
printenv
также показывает, что (во время сборки образа Docker) используется версия 3.7.x, но система пакетов не отражает это.Выдержка:
PYTHON_VERSION=3.7.3
Я вижу здесь есть Python 3.6 в качестве версии по умолчанию для всех версий Alpine до 3.9.Python 3.7 доступен только для «ребра».
Я также нашел ответ на this , который тоже не работает:
# apk add python3 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
(1/1) Installing python3 (3.6.8-r2)
Установлен Python 3.6.Однако, если я использую самый простой Alpine без Python FROM alpine:3.9
и использую ту же команду, Python 3.7 установлен :
# apk add python3 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
<TRIMMED_TEXT>
(11/11) Installing python3 (3.7.3-r0)
Как я могу сказать менеджеру пакетов в python:3.7-alpine3.9
использовать Python 3.7 вместо Python 3.6?