Jak bezpiecznie przełączyć się na Python3 jako domyślny po aktualizacji do Ubuntu 18.04

15

Ponieważ python3jest to domyślna wersja Pythona w Ubuntu 18.04 i python2nie będzie domyślnie dostarczana w nowej instalacji Ubuntu 18.04, w jaki sposób mogę ustawić ją jako python3domyślną po aktualizacji do Ubuntu 18.04 (od 16.04). Obecnie po aktualizacji do python2niego nadal domyślnie (np. pythonPolecenie kieruje do python2itp.). Jednak usunięcie pythonpakietu spowoduje usunięcie zbyt wielu pakietów, które na nim polegają, więc nie jest to tutaj opcja.

Idealnie chcę usunąć python2zależność tak bardzo, jak to możliwe. Być może proces aktualizacji można zaprojektować w taki sposób, aby sprawdzał wszystkie pakiety, niezależnie od tego, czy nadal polegają na python2zależnościach, a tym samym gromadził wszystkie python2zależności, które można zastąpić równoważną python3zależnością (co zostanie wówczas rozwiązane przez aktualizację).

zazi
źródło
Sprawdź nowe sformułowanie. Poprzednie było nieco niejasne, o co prosiłeś. Próbowałem to uporządkować w tytule wpisu.
Juan Antonio
Wielkie dzięki za edycję @JuanAntonio. Większość edycji wygląda dobrze. Właśnie wprowadziłem kilka dalszych poprawek, aby skierować te pytania we właściwym kierunku.
zazi
Czy to bezpieczne, jaki jest koniec usuwania Python2 lub pozostawiania go. Jeśli tak, to coś tego potrzebuje!
George Udosen
2
W rzeczywistości python 2 nie jest domyślnie instalowany w 18.04, więc jeśli go masz, to dlatego, że zainstalowałeś jakiś dodatkowy pakiet (lub zrobiłeś aktualizację z już zainstalowanymi wspomnianymi pakietami), który nadal wymaga python 2. To 3.x jest domyślnie nie oznacza, że ​​w archiwum nie ma już żadnych rzeczy korzystających z wersji 2.x. 20.04 na pewno nie będzie już miał Pythona 2.x, ponieważ nie będzie już obsługiwany przez upstream w tym momencie.
dobey,
„jaki jest koniec usuwania python2” - dość czysty system. moje instalacje w Pythonie uległy awarii po aktualizacji.
zazi

Odpowiedzi:

16

Ten post jest nieco stary, ale wierzę, że istnieje lepsza alternatywa: enter update-alternatives. Następujące ustawienia ustawią /usr/bin/pythondomyślną wartość na 2,7, ale w razie potrzeby będą dostępne 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

Najwyższy priorytet jest tutaj używany jako „automatyczny”, /usr/bin/pythonale można go łatwo przełączać, uruchamiając sudo update-alternatives --config python.

Joshua Whitley
źródło
1
niezła odpowiedź. w moim przypadku python2.7 był instalowany przez nodejs / npm i jakoś ustawiony jako domyślny dla python. Kiedyś sudo update-alternatives --remove-all pythonusunąłem wszystkie pytony, a następnie dodałem jedynego pytona, którego chcę używać sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Warto również wiedzieć, sudo update-alternatives --list pythonco jest.
philshem
1
możesz także zrobić sudo apt install python3-pipisudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel
11

Aby całkowicie usunąć Python2, musisz wyczyścić python2.x-minimalpakiet, który jest wykonywany przez

sudo apt purge python2.x-minimal

zastępując x dokładną wersją Pythona 2 w twoim systemie. Ale pamiętaj, aby sprawdzić, jakie inne pakiety zostały usunięte, ponieważ możesz mieć pakiety, które nadal zależą od Pythona 2 nawet po aktualizacji, a te pakiety również zostaną odinstalowane i przestaną działać.


Nie ma czegoś takiego jak „domyślny” interpreter Pythona, ponieważ zależy to tylko od tego, który plik /usr/bin/pythonwskazuje, aby zmienić go na python, użyj lnpolecenia do aktualizacji łącza, na przykład powiedzmy, że chcesz, aby wskazywał na python 3.6

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

Ewentualnie, jeśli chcesz tego tylko dla swojego użytkownika, możesz ustawić go jako swój alias w swoim .bashrc, aby to zrobić, otwórz ~/.bashrcw wybranym edytorze i dodaj następujący wiersz

alias python='python3.6' 
Amith KK
źródło
„ponieważ mogłeś mieć ze sobą pakiety, które nadal zależą od Pythona 2 nawet po aktualizacji” <- tak, a moim zamiarem jest pozbyć się tej zależności, ponieważ nie jest to tak naprawdę konieczne, ponieważ Ubuntu 18.04 uruchamia je bez python2zależności przy użyciu domyślnej python3zależności / pakiety.
zazi
1
Czy to bezpieczne, jaki jest koniec usuwania Python2 lub pozostawiania go. Jeśli tak, to coś tego potrzebuje!
George Udosen
0

W moim 16.04 /usr/bin/pythonjest tylko link do, /usr/bin/python2.7więc zakładam, że musiałbyś po prostu zmienić ten link, aby wskazywał /usr/bin/python3.x(z odpowiednim xoczywiście).

ksenoid
źródło
można również wskazać /usr/bin/pythonna /usr/bin/python3, której znajduje się link do najnowszej wersji python3 zainstalowany. Lub po prostu alias lub funkcję w twoim ~/.bashrc. Mnóstwo opcji ;-)
Kev Inski
nie, chyba nie chcę tego tutaj robić. Chcę się go pozbyć python2w moim systemie (ponieważ jest to domyślny przypadek podczas instalowania nowego Ubuntu 18.04, gdzie python3jest domyślny i python2nie jest instalowany domyślnie)
zazi
2
@zazi Nie polecam oczyszczenia python2. Wygląda na to, że wiele innych pakietów zależy od tego. Czy masz jakieś wady, utrzymując python2zainstalowany?
Kev Inski
Nie mam wady python2instalowania, jeśli jest to naprawdę konieczne, ale chcę wyraźnie ustawić python3jako domyślny, tj. Usuwać python2tak często, jak to możliwe (a czysta instalacja Ubuntu 18.04 pokazuje, że jest to możliwe).
zazi
Rzeczywiście tak jest.
Kev Inski