Як безпечно перейти на python3 за замовчуванням після оновлення до Ubuntu 18.04


15

Оскільки 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.x є типовим не означає, що в архіві немає більше речей, які використовують 2.x. 20.04 напевно більше не матиме python 2.x, тому що він більше не підтримуватиметься вище за течією.
добі

"чим закінчується видалення python2" - досить чиста система. мої установки python, де якось зламалися після оновлення.
зази

Відповіді:


16

Цей пост трохи старий, але я вважаю, що існує краща альтернатива: увійдіть 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для видалення всіх python, а потім додав єдиний 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звичайно, відповідно).


Ви також можете вказати /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 демонструє, що це можливо).
зазі

Справді це і є.
Кев Інський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.