Как безопасно переключиться на python3 по умолчанию после обновления до Ubuntu 18.04

14

Поскольку python3это версия Python по умолчанию в Ubuntu 18.04, и python2она не будет поставляться по умолчанию при новой установке Ubuntu 18.04, как я могу сделать python3настройку по умолчанию после обновления до Ubuntu 18.04 (с 16.04). В настоящее время после обновления до python2него все еще устанавливается значение по умолчанию (например, pythonкоманда указывает на python2и т. Д.). Однако очистка pythonпакета приведет к удалению слишком большого количества пакетов, которые на него полагаются, поэтому здесь это не вариант.

В идеале я хочу удалить python2зависимость как можно больше. Возможно, процесс обновления может быть спроектирован таким образом, чтобы он проверял все пакеты, действительно ли они все еще зависят от python2зависимостей, и, таким образом, собирал все python2зависимости, которые могли бы быть заменены эквивалентными python3зависимостями (которые будут разрешены обновлением).

Зази
источник
Пожалуйста, проверьте новую формулировку. Предыдущий был несколько неясен, о чем вы спрашивали. Пытался разобраться в этом из заголовка вашего поста.
Хуан Антонио
Большое спасибо за редактирование @JuanAntonio. Они большинство правок выглядят хорошо. Просто сделал некоторые дополнительные исправления, чтобы получить эти вопросы в правильном направлении.
Зази
Это безопасно, что является концом удаления python2 или оставления его. Если это там, то что-то нужно!
Джордж Удосен
2
На самом деле python 2 не установлен по умолчанию в 18.04, поэтому, если он у вас есть, то это потому, что вы установили какой-то дополнительный пакет (или выполнили обновление с уже установленными пакетами), для которого по-прежнему требуется python 2. 3. 3.x по умолчанию не означает, что в архиве больше нет вещей, использующих 2.x. 20.04, безусловно, больше не будет иметь Python 2.x, так как в этот момент он больше не будет поддерживаться апстримом.
Добей
«чем заканчивается удаление python2» - довольно чистая система. мои установки на python где-то сломались после обновления.
Зази

Ответы:

15

Этот пост немного устарел, но я считаю, что существует лучшая альтернатива: войти update-alternatives. Следующее установит для вас /usr/bin/pythonзначение по умолчанию 2.7, но при желании будет доступно 3.6:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10

Наивысший приоритет здесь используется как «автоматический» выбор, /usr/bin/pythonно вы можете легко переключиться, запустив sudo update-alternatives --config python.

Джошуа Уитли
источник
1
хороший ответ. в моем случае python2.7 устанавливался с помощью nodejs / npm и как-то устанавливался по умолчанию для python. Я использовал sudo update-alternatives --remove-all pythonудалить весь питон, а затем добавил единственный питон, который я хочу использовать sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Также полезно узнать, sudo update-alternatives --list pythonчто к чему.
Филшем
1
Вы также можете сделать sudo apt install python3-pipиsudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Даниил
11

Чтобы полностью удалить python2, вы должны очистить python2.x-minimalпакет, который выполняется

sudo apt purge python2.x-minimal

заменив x точной версией python 2 в вашей системе. Но обязательно посмотрите, какие другие пакеты удалены, поскольку у вас, возможно, были пакеты, которые все еще зависят от python 2 даже после обновления, и эти пакеты также будут удалены и перестанут работать.


Не существует такого понятия, как интерпретатор python «по умолчанию», потому что он просто зависит от того, на какой фактический файл /usr/bin/pythonуказывает, чтобы изменить его на python, используйте lnкоманду для обновления ссылки, например, допустим, вы хотите, чтобы он указывал на python 3.6

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

В качестве альтернативы, если вы просто хотите, чтобы это было для вашего пользователя, вы можете установить его в качестве псевдонима в вашем .bashrc, для этого откройте ~/.bashrcв своем редакторе и добавьте следующую строку

alias python='python3.6' 
Амит КК
источник
«как вы могли нести пакеты, которые по-прежнему зависят от Python 2 даже после обновления» <- да, и я намерен избавиться от этой зависимости, так как в этом нет особой необходимости, поскольку Ubuntu 18.04 запускает их без python2зависимости, используя значение по умолчанию python3зависимостей / пакеты.
Зази
1
Это безопасно, что является концом удаления python2 или оставления его. Если это там, то что-то нужно!
Джордж Удосен
0

На моем 16.04 /usr/bin/pythonэто просто ссылка на, /usr/bin/python2.7поэтому я предполагаю, что вам просто нужно изменить эту ссылку, чтобы указать /usr/bin/python3.x(с адекватным, xконечно).

xenoid
источник
Вы можете также указать /usr/bin/pythonна /usr/bin/python3, что ссылка на последнюю версию Python3 установлена. Или просто псевдоним или функция в вашем ~/.bashrc. Тонны вариантов ;-)
Кев Ински
нет, я думаю, это не совсем то, чем я хочу здесь заниматься. Я хочу избавиться от python2своей системы (так как это случай по умолчанию при установке свежей Ubuntu 18.04, где python3он установлен по умолчанию и python2не устанавливается по умолчанию)
zazi
2
@zazi Я бы не рекомендовал чистку python2. Кажется, что многие другие пакеты зависят от этого. Есть ли у вас какие-либо недостатки при сохранении python2установленного?
Кев Ински
У меня нет недостатков в сохранении python2установленного, если это действительно необходимо, но я хочу четко установить python3значение по умолчанию, то есть удалить его python2как можно чаще (и чистая установка Ubuntu 18.04 демонстрирует, что это возможно).
Зази
Это действительно так.
Кев Ински