Veuillez lire attentivement la question avant de fermer en double, je pense que le cas d'utilisation est unique.
J'essaie de créer une image docker qui seulement a python 3.7 installé, le problème est que si j'essaie d'installer pip, la commande installe également python 3.6 qui je ne veux pas.
La partie pertinente du fichier docker idéal que je bricole est la suivante
FROM ubuntu:18.04
# Upgrade installed packages
RUN apt-get update && apt-get upgrade -y && apt-get clean
# (...)
# Python package management and basic dependencies
RUN apt-get install -y python3.7 python3.7-dev python3.7-pip
# Register the version in alternatives
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
# Set python 3 as the default python
RUN update-alternatives --set python /usr/bin/python3.7
# Upgrade pip to latest version
RUN python -m ensurepip --upgrade
# (...)
Cela échouerait car python3.7-pip ne semble pas exister; seul python3-pip le fait, ce qui installe python 3.6 pour une raison quelconque).
J'ai essayé de ne pas installer pip du tout et de le faire manuellement, comme ça
# (...)
RUN apt-get install -y python3.7 python3.7-dev
# (...)
RUN curl 'https://bootstrap.pypa.io/get-pip.py' > get-pip.py
RUN python get-pip.py pip --no-setuptools --no-wheel
Qui échoue avec cette erreur:
Traceback (most recent call last):
File "get-pip.py", line 21492, in <module>
main()
File "get-pip.py", line 197, in main
bootstrap(tmpdir=tmpdir)
File "get-pip.py", line 82, in bootstrap
import pip._internal
File "/tmp/tmpbez2vju9/pip.Zip/pip/_internal/__init__.py", line 40, in <module>
File "/tmp/tmpbez2vju9/pip.Zip/pip/_internal/cli/autocompletion.py", line 8, in <module>
File "/tmp/tmpbez2vju9/pip.Zip/pip/_internal/cli/main_parser.py", line 8, in <module>
File "/tmp/tmpbez2vju9/pip.Zip/pip/_internal/cli/cmdoptions.py", line 14, in <module>
ModuleNotFoundError: No module named 'distutils.util'
Encore une fois, l'installation de python3-distutils fait apparaître python 3.6 dans le système
Donc, existe-t-il un moyen d'installer UNIQUEMENT un python 3.7 entièrement fonctionnel dans Ubuntu 18.04, SANS avoir à installer python 3.6?
Dans le cas où quelqu'un d'autre est d'accord pour installer Python3.6 comme effet secondaire (python3.7-distutils l'introduit comme indiqué par OP). Cela installera Python3.7 en le rendant par défaut et disposera de la dernière pip
disponible à l'aide de votre installation python3.7
FROM ubuntu:18.04
# Upgrade installed packages
RUN apt-get update && apt-get upgrade -y && apt-get clean
# (...)
# Python package management and basic dependencies
RUN apt-get install -y curl python3.7 python3.7-dev python3.7-distutils
# Register the version in alternatives
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
# Set python 3 as the default python
RUN update-alternatives --set python /usr/bin/python3.7
# Upgrade pip to latest version
RUN curl -s https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
python get-pip.py --force-reinstall && \
rm get-pip.py
# (...)
Je vois deux choix:
ou
Si votre seule exigence est de python 3.7 et que la version du système d'exploitation sous-jacent ne vous dérange pas, vous devriez choisir l'option de créer une image à partir de l'image officielle de python3.7. FROM python:3.7
Et puis installez les packages requis à partir de requirements.txt