web-dev-qa-db-ja.com

python 3.6をシステムにインストールせずに、ubuntu 18.04にpython 3.7をインストールできますか?

クローズする前に質問を注意深く読んで重複してください。ユースケースはユニークであると思います。

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をインストールする必要はありませんか?

8
juan

他の誰かが副作用として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


# (...)
5
donhector

2つの選択肢があります。

  1. Ubuntuイメージを使用して、システムからのPythonはそのままにしておきます。 pyenv( https://github.com/pyenv/pyenv )をインストールしてから、システムのPythonから完全に分離されたpython 3.7インストールをダウンロードします。

または

  1. 3.7.3-stretchまたは3.7.3-slim-stretch(Debian)というラベルの付いた公式のPythonイメージを使用します
3
Hildeberto

唯一の要件がpython 3.7であり、基盤となるOSのバージョンが気にならない場合は、公式のpython3.7イメージからイメージを作成するオプションを使用する必要があります。FROM python:3.7次に、requirements.txtから必要なパッケージをインストールします

1
Mousam Singh