Impossibile impostare la versione predefinita di Python su Python3 in Ubuntu


146

Stavo cercando di set versione di default python a python3in Ubuntu 16.04. Di default è python2(2.7). Ho seguito i passaggi seguenti:

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

ma sto ricevendo il seguente errore per la seconda istruzione,

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.   

Sono nuovo di Ubuntu e non so cosa sto facendo di sbagliato.


3
Come indicato nell'avvertimento, ti manca la priorità.
goloso52

6
Fai attenzione a non rimuovere Python 2.7 poiché paralizzerà molte strutture del tuo sistema operativo (per esperienza :()
Jacques de Hooge,

Ho apportato una modifica alla mia risposta in relazione al tuo errore di priorità.
Steampunkery,

1
Un avvertimento: mi sembra una cattiva idea passare pythona Python 3. Il modo predefinito per invocare gli script scritti in Python 2 è python my-script-p2.py, mentre lo è python3 my-script-p3.py. Mi aspetto che molti script di sistema facciano affidamento su questo.
Jan Groth,

1
Per coloro che sono interessati all'argomento, consiglierei di prestare attenzione all'ambiente virtuale: docs.python.org/3/tutorial/venv.html Il mio Ubuntu 18 LTS usa ancora Python 2.7 e, ad esempio, io uso il ambiente virtuale per l'utilizzo di Python 3.X ed essere aggiornato nei miei progetti Django.
Victor Bjorn,

Risposte:


136

Apri il tuo file .bashrc nano ~/.bashrc. Digitare alias python=python3su una nuova riga nella parte superiore del file, quindi salvare il file con ctrl + o e chiudere il file con ctrl + x. Quindi, torna al tipo di riga di comando source ~/.bashrc. Ora il tuo alias dovrebbe essere permanente.

MODIFICARE:

Per le alternative di aggiornamento, la priorità è un numero intero. La priorità rappresenta quale programma dovrebbe essere il primo utilizzato. Questo articolo riassume abbastanza bene tutto.


60
Questa è la risposta sbagliata Modificare il tuo bashrc non fa lo stesso delle alternative di aggiornamento. Ad esempio, gli script che iniziano con #!/usr/bin/env pythonnon utilizzeranno la versione in bashrc. Si prega di utilizzare la risposta di @ Pardhu.
stonewareslord,

Ho scritto questa risposta molto tempo fa e sono consapevole che le alternative di aggiornamento non sono le stesse di cambiare bashrc. Posso modificare la risposta, se lo desideri.
Steampunkery,

1
È più un avvertimento per gli utenti con questa domanda che cambiare l'alias non fa la stessa cosa. Decidi tu se vuoi modificarlo.
stonewareslord,

Questa è l'unica risposta che mi ha aiutato. Ho provato a farlo 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,

1
L'ho fatto e ha rotto le cose, come virtualenvs. Questa risposta sta creando più problemi
Kuzeko,

295

La seconda riga menzionata può essere cambiata in

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

Questo dà una priorità di 10 per il percorso di python3. Lo svantaggio della modifica del .bashrcfile è che non funzionerà durante l'utilizzo dei comandi con sudo.

Aggiornamento: utilizzare sudodurante l'esecuzione del comando in questo modo:

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


3
Uscita facile e buona.
PrakashG,

7
Buono e giusto al punto. "<priority>" nel messaggio di errore lo ha già suggerito. A proposito, "sudo" è in genere necessario per eseguire questo comando di installazione.
ywu

4
Come hai detto, ho dovuto eseguire "sudo update-alternatives --install / usr / bin / python python / usr / bin / python3 10"
Roy

3
Questo è il modo giusto per farlo di sicuro, ma vale la pena notare che la modifica del valore predefinito di sistema probabilmente romperà alcune cose. Ad esempio, ho dovuto andare ad applicare una correzione a terminator , che funziona solo con python2.
Dale Anderson,

1
Non funziona completamente - dopo l' pythonesecuzione di questo comando python3, ma python-configcontinua a funzionare python2-confige ne consegue una rottura generale
Chris Dodd,

36

Per modificare Python 3.6.8 come predefinito in Ubuntu 18.04 in Python 3.7.

Installa Python 3.7

Passaggi per installare Python3.7 e configurarlo come interprete predefinito.

  1. Installa il pacchetto python3.7 usando apt-get

    sudo apt-get install python3.7

  2. Aggiungi Python3.6 e Python 3.7 a 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. Aggiorna Python 3 per puntare a Python 3.7

    sudo update-alternatives --config python3 Immettere 2 per Python 3.7

  2. Prova la versione di Python

python3 --v
Python 3.7.1 

3
È possibile che si desideri includere un avviso che può interrompere il software in pacchetto. Python 3.6 è l'impostazione predefinita distribuita e anche tutti i pacchetti software in bundle assumeranno questa versione.
Tim

Questo mi ha aiutato. Grazie.
Jeffrey Copps il

Posso sostituire Python con la versione 3.7 invece di Python3?
Wee Hong

@Tim, qual è il modo migliore per occuparsene?
Shreya,

@Wee Hong, sì, puoi. Invece di $ sudo update-alternative --install / usr / bin / python3 python3 .... basta sostituire a $ sudo update-alterative --install / usr / bin / python python ..... e dopo: sudo update -alternativi --config python.
Arthur Zennig,

23

Per passare a python3, è possibile utilizzare il seguente comando nel terminale alias python=python3.


4
Ma questo funziona solo per l'attuale processo in esecuzione nel terminale. Se chiudo e apro il terminale tornerà a python2.
RejeeshChandran,

2
@RejeeshChandran Guarda Steampunkery risposta
Seraf

13

Un modo semplice e sicuro sarebbe usare un alias. Inseriscilo nel file ~ / .bashrc: se hai l'editor gedit, usa

gedit ~ / .bashrc

per andare nel file bashrc e quindi nella parte superiore del file bashrc apportare la seguente modifica.

alias python = python3

Dopo aver aggiunto quanto sopra nel file. eseguire il comando seguente

source ~ / .bash_aliases o source ~ / .bashrc

esempio:

$ python --version

Python 2.7.6

$ python3 --version

Python 3.4.3

$ alias python = python3

$ python --version

Python 3.4.3


10

Come ulteriore aggiunta, puoi aggiungere anche un alias per pip (in .bashrc o bash_aliases):

alias pip = 'pip3'

Molti trovano che un'installazione pulita di python3 in realtà punta a python3.x quindi potrebbe essere necessario:

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


7

Inizialmente installa python3 e pip3

sudo apt-get install python3 python3-pip

poi nel tuo terminale corri

alias python=python3

Controlla la versione di Python nel tuo computer.

python --version

7

Se hai Ubuntu Focal (20.20) puoi installare python-is-python3:

sudo apt-get install python-is-python3

per sostituire il collegamento simbolico in cui /usr/bin/pythonpuntare /usr/bin/python3.8.


5

Come dice, ha update-alternatives --installbisogno degli argomenti <link> <nome> <percorso> e <priorità>.

Hai link ( /usr/bin/python), name ( python) e path ( /usr/bin/python3), ti manca la priorità.

update-alternatives --help dice:

<priority> è un numero intero; le opzioni con numeri più alti hanno una priorità più alta in modalità automatica.

Quindi basta mettere un 100o qualcosa alla fine


5

Fare

cd ~
gedit .bash_aliases

poi scrivi neanche

alias python=python3

o

alias python='/usr/bin/python3'

Salvare il file, chiudere il terminale e aprirlo di nuovo.
Ora dovresti stare bene! collegamento


5

Segui questi passaggi per aiutare a cambiare il python predefinito con la versione di python appena aggiornata. Ha funzionato bene per me.

  • sudo apt-install python3.7 Installa l'ultima versione di Python che desideri
  • cd /usr/bin Immettere la directory principale in cui è installato Python
  • sudo unlink pythonoppure sudo unlink python3. Scollega il pitone predefinito corrente
  • sudo ln -sv /usr/bin/python3.7 python Collega la nuova versione di Python scaricata
  • python --version Controlla la nuova versione di Python e sei a posto

3

Per un altro approccio non invasivo, solo per l'utente corrente:

# 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 sarà pronto in una nuova shell.


2

ottenere il percorso Python da

ls /usr/bin/python*

quindi imposta la tua versione di Python

alias python="/usr/bin/python3"

0

Il modo migliore in Ubuntu 18.04 che funzionerà per tutti gli utenti è

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

Salva le modifiche e riavvia.

Dopo aver riavviato qualsiasi versione di python 3 presente nel sistema insieme a python 2.7 verrà presa come impostazione predefinita. Potresti essere più specifico dicendo quanto segue in alias se hai più versioni di Python 3.

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

0

Rimuovi semplicemente python-is-python2:

sudo apt purge python-is-python2

E installa python-is-python3:

sudo apt install python-is-python3

Automatizzerà il processo di transizione al nuovo python3. Opzionalmente puoi liberarti dei pacchetti rimanenti in seguito:

sudo apt autoremove && sudo apt autoclean

0

Per modificare Python 3.6.8 come predefinito in Ubuntu 18.04 da Python 2.7 puoi provare lo strumento da riga di comando update-alternatives.

sudo update-alternatives --config python

Se viene visualizzato l'errore "Nessuna alternativa per Python", imposta tu stesso un'alternativa con il seguente comando:

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

Modifica di conseguenza il percorso /usr/bin/python3della versione di Python desiderata.

L'ultimo argomento ha specificato che priorità indica che, se non viene effettuata alcuna selezione alternativa manuale, verrà impostata l'alternativa con il numero di priorità più elevato. Nel nostro caso abbiamo impostato una priorità 2 per /usr/bin/python3.6.8e, di conseguenza, è /usr/bin/python3.6.8stata impostata automaticamente come versione predefinita di Python dal comando update-alternatives.

possiamo in qualsiasi momento passare tra le versioni alternative di Python sopra elencate usando il comando seguente e inserendo un numero di selezione:

update-alternatives --config python

-1

Inizialmente, assicurati che Python3 sia installato sul tuo computer

Vai al tuo terminale e digita:

cd ~/ per andare alla tua home directory

Se non hai ancora impostato il tuo .bash_profile, digita touch .bash_profileper creare il tuo .bash_profile.

In alternativa, digitare open -e .bash_profileper modificare il file.

Copia e salva alias python=python3nel .bash_profile.

Chiudi e riapri il tuo Terminale. Quindi digitare il comando seguente per verificare se Python3 è la versione predefinita ora:

python --version

Dovresti vedere python 3.xy è la tua versione predefinita.

Saluti!


questo metodo è già stato descritto nella risposta preferita per questa domanda. e la tua risposta non contribuisce a nulla.
tripulse il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.