Nie można ustawić domyślnej wersji języka Python na python3 w systemie Ubuntu

174

Próbowałem ustawić domyślną wersję Pythona na python3in Ubuntu 16.04. Domyślnie jest to python2(2.7). Wykonałem poniższe kroki:

update-alternatives --remove python /usr/bin/python2
update-alternatives --install /usr/bin/python python /usr/bin/python3

ale otrzymuję następujący błąd dla drugiej instrukcji,

rejeesh@rejeesh-Vostro-1015:~$ update-alternatives --install /usr/bin/python python /usr/bin/python3
update-alternatives: --install needs <link> <name> <path> <priority>

Use 'update-alternatives --help' for program usage information.   

Jestem nowy w Ubuntu i nie wiem, co robię źle.

RejeeshChandran
źródło
3
Jak stwierdzono w ostrzeżeniu, brakuje Ci priorytetu.
chciwy 52
7
Uważaj, aby nie usunąć Pythona 2.7, ponieważ spowoduje to uszkodzenie wielu funkcji twojego systemu operacyjnego (z doświadczenia :()
Jacques de Hooge
Zredagowałem moją odpowiedź w związku z twoim priorytetowym błędem.
Steampunkery
1
Słowo ostrzeżenia: wydaje mi się, że zmiana pythonna Python 3 to zły pomysł . Domyślnym sposobem wywoływania skryptów napisanych w Pythonie 2 jest python my-script-p2.py, póki jest python3 my-script-p3.py. Spodziewałbym się, że będzie na tym polegać wiele skryptów systemowych.
jan groth
1
Osobom zainteresowanym tematem polecam zwrócić uwagę na środowisko wirtualne: docs.python.org/3/tutorial/venv.html Mój Ubuntu 18 LTS nadal korzysta z Pythona 2.7 i np. wirtualne środowisko do używania Pythona 3.X i bądź na bieżąco z moimi projektami Django.
Victor Bjorn

Odpowiedzi:

158

EDYTOWAĆ:

Napisałem to, gdy byłem młody i naiwny, update-alternativesto lepszy sposób na zrobienie tego. Zobacz odpowiedź @ Pardhu.

Otwórz swój plik .bashrc nano ~/.bashrc. Wpisz alias python=python3 nowy wiersz na górze pliku, a następnie zapisz plik za pomocą ctrl + o i zamknij plik za pomocą ctrl + x. Następnie wróć do typu linii poleceń source ~/.bashrc. Teraz twój alias powinien być trwały.

Steampunkery
źródło
70
To jest zła odpowiedź. Edycja twojego bashrc nie robi tego samego co aktualizacja-alternatywy. Na przykład skrypty zaczynające się od #!/usr/bin/env pythonnie będą używać wersji z bashrc. Użyj odpowiedzi @ Pardhu.
Stonewareslord
Napisałem tę odpowiedź dawno temu i zdaję sobie sprawę, że alternatywy aktualizacji to nie to samo, co zmiana bashrc. Mogę edytować odpowiedź, jeśli chcesz.
Steampunkery
1
Jest to bardziej ostrzeżenie dla użytkowników z tym pytaniem, że zmiana aliasu nie powoduje tego samego. Do Ciebie, jeśli chcesz edytować.
stonewareslord
To jedyna odpowiedź, która mi pomogła. Próbowałem to zrobićsudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5.2 . But I got: update-alternatives: --install needs <link> <name> <path> <priority> Use 'update-alternatives --help' for program usage information.
alexchenco
2
Zrobiłem to i to zepsuło rzeczy, takie jak virtualenvs. Ta odpowiedź stwarza więcej problemów
Kuzeko
360

Drugi wspomniany wiersz można zmienić na

update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Daje to priorytet 10 dla ścieżki python3. Wadą edycji .bashrcpliku jest to, że nie będzie działać podczas używania poleceń z sudo.

Aktualizacja: użyj sudopodczas uruchamiania polecenia w następujący sposób:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Pardhu
źródło
4
Dobre i łatwe wyjście.
PrakashG
8
Dobrze i trafnie w sedno. „<priority>” w komunikacie o błędzie już to sugerował. Przy okazji, do uruchomienia tego polecenia instalacji zazwyczaj potrzebne jest polecenie „sudo”.
ywu
4
Jak powiedział Ywu, musiałem uruchomić „sudo update-alternatives --install / usr / bin / python python / usr / bin / python3 10”
Roy
3
Na pewno jest to właściwy sposób, ale warto zauważyć, że zmiana domyślnych ustawień systemowych może zepsuć niektóre rzeczy. Na przykład musiałem iść i zastosować poprawkę do terminatora , który działa tylko z pythonem2.
Dale Anderson
1
Nie działa całkowicie - po pythonuruchomieniu tego polecenia python3, ale python-confignadal działa python2-configi następuje ogólne uszkodzenie
Chris Dodd
47

Aby zmienić Python 3.6.8 jako domyślny w Ubuntu 18.04 na Python 3.7.

Zainstaluj Python 3.7

Kroki, aby zainstalować Python3.7 i skonfigurować go jako domyślny interpreter.

  1. Zainstaluj pakiet python3.7 za pomocą apt-get

    sudo apt-get install python3.7

  2. Dodaj Python3.6 i Python 3.7 do update-alternatives

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
  1. Zaktualizuj Python 3, aby wskazywał na Python 3.7

    sudo update-alternatives --config python3 Wpisz 2 dla Pythona 3.7

  2. Przetestuj wersję Pythona

python3 --version
Python 3.7.1 
Purushottam Prabhakar
źródło
5
Możesz dołączyć ostrzeżenie, że może to spowodować uszkodzenie oprogramowania w pakiecie. Python 3.6 jest domyślną dystrybucją i wszystkie dołączone pakiety oprogramowania będą również przyjmować tę wersję.
Tim
Czy mogę zamienić pythona na wersję 3.7 zamiast na python3?
Wee Hong
@Tim, jaki jest najlepszy sposób, aby się tym zająć?
Shreya
@Wee Hong, tak, możesz. Zamiast $ sudo update-alternative --install / usr / bin / python3 python3 .... po prostu zamień na $ sudo update-alterative --install / usr / bin / python python ..... i po: sudo update -alternatives --config python.
Arthur Zennig
25

Aby zmienić na python3, możesz użyć następującego polecenia w terminalu alias python=python3.

DanteVoronoi
źródło
5
Ale to działa tylko dla aktualnie uruchomionego procesu w terminalu. Jeśli zamknę i otworzę terminal, zmieni się z powrotem na python2.
RejeeshChandran
2
@RejeeshChandran Spójrz na odpowiedź Steampunkery
Seraf
20

Jeśli masz Ubuntu 20.04 LTS (Focal Fossa), możesz zainstalować python-is-python3:

sudo apt install python-is-python3

który zastępuje łącze symboliczne w, /usr/bin/pythonaby wskazywać /usr/bin/python3.

silviot
źródło
2
Drobna literówka: Ubuntu Focal to 20.04, a nie 20.20
Conchylicultor
1
Właśnie tego chciałem, a nie tylko aliasu. Dzięki :)
Tien Do
1
Ponieważ chodzi o najnowszą dystrybucję, sugerowałbym użycie aptzamiast komendy apt-getfor install.
Shiplu Mokaddim
@ShipluMokaddim Słuszna uwaga. Odpowiedź poprawiona!
silviot
15

Prostym bezpiecznym sposobem byłoby użycie aliasu. Umieść to w pliku ~ / .bashrc: jeśli masz edytor gedit użyj

gedit ~ / .bashrc

aby przejść do pliku bashrc, a następnie u góry pliku bashrc wprowadź następującą zmianę.

alias python = python3

Po dodaniu powyższego w pliku. uruchom poniższe polecenie

źródło ~ / .bash_aliases lub source ~ / .bashrc

przykład:

$ python --version

Python 2.7.6

$ python3 --version

Python 3.4.3

$ alias python = python3

$ python --version

Python 3.4.3

Chan
źródło
10

Jako dodatkowy dodatek możesz dodać alias dla pip (w .bashrc lub bash_aliases):

alias pip = „pip3”

Wiele osób przekonuje się, że czysta instalacja python3 w rzeczywistości wskazuje na python3.x, więc możesz potrzebować:

alias pip = 'pip3.6'
alias python = 'python3.6'

Paraic
źródło
8

Najpierw zainstaluj python3 i pip3

sudo apt-get install python3 python3-pip

następnie w swoim biegu terminala

alias python=python3

Sprawdź wersję Pythona na swoim komputerze.

python --version

źródło
8

Po prostu wykonaj następujące kroki, aby zmienić domyślny język Python na nowo uaktualnioną wersję języka Python. Pracował dobrze dla mnie.

  • sudo apt-install python3.7 Zainstaluj najnowszą wersję Pythona, którą chcesz
  • cd /usr/bin Wprowadź katalog główny, w którym jest zainstalowany Python
  • sudo unlink pythonlub sudo unlink python3. Odłącz bieżący domyślny język Python
  • sudo ln -sv /usr/bin/python3.7 python Połącz nową pobraną wersję języka Python
  • python --version Sprawdź nową wersję Pythona i gotowe
Shorya Sharma
źródło
5

Jak mówi, update-alternatives --installpotrzebuje argumentów <link> <name> <path> i <priority>.

Masz link ( /usr/bin/python), name ( python) i path ( /usr/bin/python3), brakuje Ci priorytetu.

update-alternatives --help mówi:

<priority> jest liczbą całkowitą; opcje o wyższych numerach mają wyższy priorytet w trybie automatycznym.

Więc po prostu umieść 100coś na końcu

user7502402
źródło
5

Zrobić

cd ~
gedit .bash_aliases

następnie napisz

alias python=python3

lub

alias python='/usr/bin/python3'

Zapisz plik, zamknij terminal i otwórz go ponownie.
Teraz powinno być dobrze! Połączyć

Rika
źródło
3

pobierz ścieżkę Pythona z

ls /usr/bin/python*

następnie ustaw swoją wersję Pythona

alias python="/usr/bin/python3"
pradeep karunathilaka
źródło
3

Aby uzyskać inne nieinwazyjne podejście tylko dla bieżącego użytkownika:

# First, make $HOME/bin, which will be automatically added to user's PATH
mkdir -p ~/bin
# make link actual python binaries
ln -s $(which python3) python
ln -s $(which pip3) pip

python pip będzie gotowy w nowej powłoce.

tdihp
źródło
3

Aby zmienić Python 3.6.8 jako domyślny w Ubuntu 18.04 z Python 2.7, możesz wypróbować narzędzie wiersza poleceń update-alternatives.

sudo update-alternatives --config python

Jeśli pojawi się błąd „brak alternatywy dla Pythona”, skonfiguruj samodzielnie alternatywę za pomocą następującego polecenia:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

Zmień ścieżkę /usr/bin/python3 do żądanej wersji Pythona.

Ostatni argument o określonym priorytecie oznacza, że ​​jeśli nie zostanie dokonany ręczny wybór alternatywy, zostanie ustawiona alternatywa o najwyższym priorytecie. W naszym przypadku ustawiliśmy priorytet 2 dla /usr/bin/python3.6.8iw rezultacie /usr/bin/python3.6.8została ona automatycznie ustawiona jako domyślna wersja Pythona przez polecenie update-alternatives.

możemy w dowolnym momencie przełączać się między wymienionymi powyżej alternatywnymi wersjami Pythona za pomocą poniższego polecenia i wpisując numer wyboru:

update-alternatives --config python
Ranjeet Singh
źródło
1

Najlepszym sposobem w Ubuntu 18.04, który będzie działał dla wszystkich użytkowników, jest

sudo vim /etc/bash.bashrc
add lines
alias python=python3
alias pip=pip3

Zapisz zmiany i uruchom ponownie.

Po ponownym uruchomieniu dowolna wersja pythona 3, którą masz w systemie, wraz z pythonem 2.7, zostanie przyjęta jako domyślna. Jeśli masz wiele wersji Pythona 3, możesz podać więcej szczegółów, mówiąc w aliasie następujące informacje.

sudo vim /etc/bash.bashrc
add lines
alias python=python3.6
alias pip=pip3.6
Mian Asbat Ahmad
źródło
0

Po prostu usuń python-is-python2:

sudo apt purge python-is-python2

I zainstaluj python-is-python3:

sudo apt install python-is-python3

Zautomatyzuje proces przejścia na nowy python3. Opcjonalnie możesz pozbyć się pozostałych pakietów później:

sudo apt autoremove && sudo apt autoclean
Farab Alipanah
źródło
0

Nie podałeś argumentu priorytetowego

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 5

Możesz zastąpić 5 dowolnym priorytetem. Alternatywa o wyższym priorytecie ma pierwszeństwo przed niższym priorytetem.

Vishad Goyal
źródło
0

Ustaw priorytet dla domyślnego języka Python w terminalu Linux, dodając to:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1

Tutaj ustawiliśmy python3priorytet 10 i python2priorytet 1. Spowoduje to utworzenie python3domyślnego języka Python. Jeśli chcesz, aby Python2 był domyślny, ustaw priorytet python2 na wyższy niż python3

SouMitya chauhan
źródło
-2

Najpierw upewnij się, że na komputerze jest zainstalowany Python3

Przejdź do terminala i wpisz:

cd ~/ aby przejść do katalogu domowego

Jeśli jeszcze tego nie zrobiłeś .bash_profile, wpisztouch .bash_profile aby utworzyć swój .bash_profile.

Lub wpisz open -e .bash_profile aby edytować plik.

Skopiuj i zapisz alias python=python3 w .bash_profile.

Zamknij i ponownie otwórz terminal. Następnie wpisz następujące polecenie, aby sprawdzić, czy Python3 jest teraz Twoją domyślną wersją:

python --version

Powinieneś zobaczyć, że python 3.xy to Twoja domyślna wersja.

Twoje zdrowie!

nurealam siddiq
źródło
ta metoda została już opisana w preferowanej odpowiedzi na to pytanie. Twoja odpowiedź nic nie wnosi.
tripulse