Если я создам самый простой образ докера на основе Alpine, который включает Python:
FROM python:3.7-alpine3.9
Я могу успешно ввести его и убедиться, что установлена версия 3.7:
/ # python --version
Python 3.7.3
/ # python3 --version
Python 3.7.3
Однако, если я устанавливаю некоторые пакеты, для которых требуется Python3, например examplepython3-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
также показывает, что (во время сборки образа докера) используется версия 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?