Могу ли я установить Python 3.7 в Ubuntu 18.04 без Python 3.6 в системе? - PullRequest
4 голосов
/ 14 мая 2019

Пожалуйста, внимательно прочитайте вопрос, прежде чем закрыть его как дубликат, я считаю, что сценарий использования является уникальным.

Я пытаюсь создать образ докера, в котором установлен только Python 3.7 , проблема в том, что, если я пытаюсь установить pip, команда также устанавливает python 3.6, который мне не нужен .

Соответствующая часть файла идеального докера, с которым я работаю, выглядит следующим образом

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

Итак, есть ли способ установить ТОЛЬКО полнофункциональный python 3.7 в ubuntu 18.04, БЕЗ необходимости устанавливать python 3.6?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Я вижу два варианта:

  1. Используя образ Ubuntu, оставьте Python из системы нетронутым. Установите pyenv (https://github.com/pyenv/pyenv),, затем загрузите установку Python 3.7, полностью отделенную от Python системы.

или

  1. Используйте официальный образ Python с меткой 3.7.3-stretch или 3.7.3-slim-stretch (Debian)
0 голосов
/ 12 июня 2019

Если ваше единственное требование - Python 3.7, и версия лежащего в его основе ОС вас не беспокоит, вам следует выбрать вариант создания образа из официального изображения Python3.7.FROM python:3.7 А затем установите требуемые пакеты из файла require.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...