Come passare in sicurezza a python3 come predefinito dopo l'aggiornamento a Ubuntu 18.04


14

Poiché python3è la versione predefinita di Python in Ubuntu 18.04 e python2non verrà fornita per impostazione predefinita su una nuova installazione di Ubuntu 18.04, come posso fare l' python3impostazione predefinita dopo un aggiornamento a Ubuntu 18.04 (dalla 16.04). Attualmente, dopo l'aggiornamento ad python2esso è ancora predefinito (ad es. Il pythoncomando indirizza a python2ecc.). Tuttavia, l'eliminazione del pythonpacchetto comporterà la rimozione di troppi pacchetti che si basano su di esso, quindi questa non è un'opzione qui.

Idealmente, voglio rimuovere la python2dipendenza il più possibile. Forse il processo di aggiornamento potrebbe essere progettato in modo tale da controllare tutti i pacchetti, indipendentemente dal fatto che facciano realmente affidamento sulle python2dipendenze e quindi raccolga tutte le python2dipendenze che potrebbero essere sostituite da una python3dipendenza equivalente (che verrà poi risolta dall'aggiornamento).


Si prega di controllare la nuova formulazione. Il precedente non era abbastanza chiaro su quello che stavi chiedendo. Ho cercato di risolvere il problema dal titolo del tuo post.
Juan Antonio,

Grazie mille per la modifica @JuanAntonio. La maggior parte delle modifiche ha un bell'aspetto. Ho appena apportato ulteriori correzioni per portare queste domande nella giusta direzione.
Zazi,

È sicuro, qual è la fine di rimuovere python2 o lasciarlo. Se è lì allora qualcosa ne ha bisogno!
George Udosen,

2
In effetti python 2 non è installato di default in 18.04, quindi se ce l'hai, è perché hai installato un pacchetto aggiuntivo (o hai fatto un aggiornamento con detti pacchetti già installati), che richiede ancora python 2. Quel 3.x è predefinito non significa che non ci sono più cose usando 2.x nell'archivio. 20.04 non avrà sicuramente più Python 2.x, poiché a quel punto non sarà più supportato da upstream.
Dobey,

"qual è la fine della rimozione di python2" - un sistema piuttosto pulito. le mie installazioni di Python in qualche modo interrotte dopo l'aggiornamento.
Zazi,

Risposte:


15

Questo post è un po 'vecchio, ma credo che esista un'alternativa migliore: invio update-alternatives. Quanto segue imposterà il tuo /usr/bin/pythonvalore predefinito su 2.7 ma avrai 3.6 disponibile quando vuoi:

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

La massima priorità qui viene utilizzata come scelta "automatica" per /usr/bin/pythonma puoi facilmente passare eseguendo sudo update-alternatives --config python.


1
bella risposta. nel mio caso, python2.7 veniva installato da nodejs / npm e in qualche modo impostato come predefinito per python. Ho usato sudo update-alternatives --remove-all pythonper rimuovere tutto Python, e quindi ho aggiunto l'unico Python che voglio usare sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Anche bello sapere è sudo update-alternatives --list pythonvedere cosa è cosa.
filmshem

1
potresti anche voler fare sudo apt install python3-pipesudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel

11

Per rimuovere completamente python2, è necessario eliminare il python2.x-minimalpacchetto da cui è stato eseguito

sudo apt purge python2.x-minimal

sostituendo x con la versione esatta di python 2 sul tuo sistema. Ma assicurati di vedere quali altri pacchetti vengono rimossi poiché potresti aver portato pacchetti che dipendono ancora da python 2 anche dopo l'aggiornamento e che anche questi pacchetti verranno disinstallati e smetteranno di funzionare.


Non esiste un interprete python "predefinito" perché dipende solo da quale file effettivo /usr/bin/pythonpunta, per cambiarlo in python usa il lncomando per aggiornare il collegamento, per esempio diciamo che vuoi che indichi python 3.6

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

In alternativa, se lo desideri solo per il tuo utente, puoi impostarlo come alias nel tuo .bashrc, per farlo, aprilo ~/.bashrcnel tuo editor preferito e aggiungi la seguente riga

alias python='python3.6' 

"come potresti aver portato pacchetti che dipendono ancora da python 2 anche dopo l'aggiornamento" <- sì, e la mia intenzione è quella di sbarazzarmi di questa dipendenza in quanto non è realmente necessario, poiché Ubuntu 18.04 li esegue senza python2dipendenza usando il suo valore predefinito python3dipendenze / pacchetti.
Zazi,

1
È sicuro, qual è la fine di rimuovere python2 o lasciarlo. Se è lì allora qualcosa ne ha bisogno!
George Udosen,

0

Sul mio 16.04 /usr/bin/pythonè solo un link a /usr/bin/python2.7quindi presumo che dovresti semplicemente cambiare questo link per puntare a /usr/bin/python3.x(con adeguato xovviamente).


si potrebbe anche puntare /usr/bin/pythona /usr/bin/python3, che è un collegamento all'ultima versione di python3 installata. O semplicemente un alias o una funzione nel tuo ~/.bashrc. Tonnellate di opzioni ;-)
Kev Inski

no, immagino, questo non è proprio quello che voglio fare qui. Voglio sbarazzarmi di python2nel mio sistema (poiché è il caso predefinito quando si installa un nuovo Ubuntu 18.04, dove python3è predefinito e python2non è installato per impostazione predefinita)
zazi

2
@zazi Non consiglierei l'eliminazione python2. Sembra che molti altri pacchetti dipendano da questo. Hai degli svantaggi mantenendo python2installato?
Kev Inski,

Non ho alcun svantaggio di rimanere python2installato, se davvero necessario, ma voglio impostare chiaramente python3come predefinito, cioè rimuovere il python2più spesso possibile (e un'installazione pulita di Ubuntu 18.04 dimostra che ciò è possibile).
Zazi,

Anzi lo fa.
Kev Inski,
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.