クローズする前に質問を注意深く読んで重複してください。ユースケースはユニークであると思います。
python 3.7のみがインストールされているのDockerイメージを作成しようとしています。問題は、pipをインストールしようとすると、コマンドがpython 3.6もインストールすることです- したくない。
私がいじくり回している理想的なdockerファイルの関連部分は次のとおりです
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
# (...)
python3.7-pipが存在しないように見えるため、これは失敗します。 python3-pipのみが実行します。これは、何らかの理由でpython 3.6をインストールするものです。
私はpipをまったくインストールせずに手動でそれをやろうとしました
# (...)
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
これはこのエラーで失敗します:
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'
繰り返しになりますが、python3-distutilsをインストールすると、システムにpython 3.6が表示されます
それで、ubuntu 18.04に完全に機能するpython 3.7のみをインストールする方法はありますか?python 3.6をインストールする必要はありませんか?
他の誰かが副作用としてPython3.6をインストールしても問題ない場合(python3.7-distutilsがOPによって指摘されたようにそれを導入します)。これにより、Python3.7がデフォルトになり、python3.7インストールを使用して最新のpip
がインストールされます。
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
# (...)
2つの選択肢があります。
または
唯一の要件がpython 3.7であり、基盤となるOSのバージョンが気にならない場合は、公式のpython3.7イメージからイメージを作成するオプションを使用する必要があります。FROM python:3.7
次に、requirements.txtから必要なパッケージをインストールします