Aggiornamento di Python sul sistema Ubuntu


78

Voglio aggiornare la build di Python sul mio box Linux, ma l'unico modo per sapere come farlo è disinstallare la versione corrente e installare quella nuova. Il mio sistema è già aggiornato (ho aggiornato ieri). Volevo sapere se esiste un modo per aggiornare un programma specifico dalla riga di comando, come sudo apt-get update <program-name>. So che questo comando non esiste, ma spero che esista qualcosa di equivalente.


Se il tuo sistema è aggiornato, lo è anche Python sul tuo sistema (secondo i tuoi repository). Ho sbagliato?
cYrus il

Risposte:


64

Come già notato da altri, bare sudo apt-get install packageinstallerà l'ultima versione disponibile, sostituendo quella precedente se necessario.

Ma con alcuni software (tra cui Python) la situazione è leggermente diversa. Alcune versioni principali, molto e incompatibilmente diverse ottengono i propri pacchetti. Ad esempio, Python 2.6 , Python 2.7 , Python 3.1 vivono tutti in pacchetti separati su Ubuntu.

Di particolare importanza è il fatto che una delle politiche di Ubuntu è l'uso estensivo di Python per la scrittura di software per l'utente finale. Quindi, in effetti, una parte abbastanza grande del sistema è scritta in Python. Al momento, il codice gira su Python 2.6 - quindi questa versione è quella predefinita al momento dell'installazione; e il codice non funzionerà facilmente, diciamo, su Python 2.7 - perché esistono incompatibilità. Per commutare il sistema su Python 2.7 è necessario eseguire un lavoro, che consiste nell'aggiornamento e nella ripetizione del test di tutti gli script. Questo non può essere fatto facilmente; cioè, non puoi semplicemente "passare" il tuo sistema a Python 2.7 ed eliminare la versione precedente.

Ma. Se non ti interessano gli ingranaggi fantasiosi del tuo sistema e hai solo bisogno di un nuovo Python - non vedi ostacoli. Vai e sudo apt-get install python3codifica per 3.x Python coraggiosamente; ricorda solo di lanciare i tuoi script con python3e usare la #!/usr/bin/env python3linea shebang.


6
Grandi dettagli sui meccanismi dietro le quinte.
efficienzaIsBliss

16
sudo apt-get install python 3.3.3

questo è per Python (3.3.3) per diverse versioni, deve essere usato il numero di versione corrispondente.


4
Penso che lo spazio tra Python e la versione non dovrebbe essere lì. sudo apt-get install python3.6ha funzionato per me, ma non influisce in alcun modo su Python 3.5.
GUI Junkie,

sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... Argomenti separati indicano a apt di installare più pacchetti
Clancy Hood,

3
Dopo aver installato il mio numero di versione di Python è lo stesso? Quale potrebbe essere la ragione?
Ramesh Pareek,

Ho usato questo metodo, ma non riesco a trovare dove è stato installato (cioè come aprire una shell 3.7). @RameshPareek questo potrebbe essere stato anche il tuo problema. non sembra essere in / usr / bin. python is already the newest version (2.7.12-1~16.04). python set to manually installed.qualche idea?
Fan numero uno di Bjorks il

10
sudo apt-get install python3.6

Questo installa python 3 in linux insieme a side python 2. Per accedere a python 3 entra dopo aver aperto il terminale.

python3

2
Questo duplica un'altra risposta e non aggiunge nuovi contenuti. Per favore, non pubblicare una risposta a meno che tu non abbia effettivamente qualcosa di nuovo da contribuire.
DavidPostill

3
scusa volevo solo scrivere il comando per ottenere quello nuovo.
G-Ox7cd,

6
Se corro, ottengoE: Unable to locate package python3.6 E: Couldn't find any package by glob 'python3.6' E: Couldn't find any package by regex 'python3.6'
Kajsa il

1
sudo add-apt-repository ppa: deadsnakes / ppa -y && sudo apt-get update
ski_squaw

E: Unable to locate package python3.6
Dims

4

Sei vicino a pensare a un comando come sudo apt-get update(che è un comando effettivo, ma non fa quello che vuoi.)

Per aggiornare Python e tutto il resto che hai installato, esegui semplicemente il comando:

sudo apt-get upgrade

Grazie, ma sapevo già del comando di aggiornamento, motivo per cui ho pubblicato il fatto che il mio sistema è già aggiornato. Speravo di trovare un comando che potesse essere mirato a app specifiche.
efficienzaIsBliss

apt non aggiornerebbe nulla di aggiornato, quindi non farebbe differenza; p
Journeyman Geek

L'OP vuole aggiornare Python in modo specifico . Dire loro di aggiornare tutti i pacchetti che hanno è un consiglio pigro e cattivo.
Przemek D


3

Nel caso in cui stai cercando di aggiornare solo una versione secondaria del pacchetto python come 2.7.11+ t0 2.7.12, allora sudo apt-get install python2.7dovresti farlo per te


2

pyenv potrebbe essere una buona opzione per te: https://github.com/yyuu/pyenv


Per quanto riguarda la risposta di @ulidtko , una possibile alternativa alla sostituzione del python di sistema potrebbe essere quella di utilizzare un ambiente isolato con la versione di Python desiderata. Questo è simile a un "ambiente virtuale", ma per Python stesso. L'ho usato in passato per progetti legacy eseguiti su Python 2.6, nonché per l'aggiornamento dalla versione legacy di Python a Python3.


Non ho familiarità con l'area, ma potresti spiegare come questo affronta la domanda e risolve il problema?
Ben N,

1
Per quanto riguarda la risposta di @ ulidtko ( superuser.com/a/241903/152143 ), una possibile alternativa alla sostituzione del python di sistema potrebbe essere quella di utilizzare un ambiente isolato con la versione di Python desiderata. Questo è simile a un "ambiente virtuale", ma per Python stesso. L'ho usato in passato per progetti legacy eseguiti su Python 2.6, nonché per l'aggiornamento dalla versione legacy di Python a Python3.
piacevolmente il

1
apt-get install python

Credo che dovrebbe funzionare. Dovrai cambiare 'python' in modo che corrisponda ovviamente al nome del pacchetto appropriato nel tuo repository.


1

Come tutti sappiamo che Python viene fornito con la versione 3.5. Quindi è molto semplice aggiornare Python 2.7 (che è presente di default in Ubuntu 16.04) a Python 3.5.

Segui i seguenti passi:

  1. Terminale aperto
  2. Diventa utente root usando il comando sudo.
  3. Utilizzare il codice seguente per aggiornare Python da 2.7 a 3.5

    sudo apt-get install python3.5

  4. Ti verrà chiesto il permesso, quindi dai l'opzione Y.

  5. Aspetta di completare il processo.
  6. cancella lo schermo usando il comando clear
  7. Controlla la versione di Python con il comando seguente.

    pitone -versione


1
Si prega di utilizzare la formattazione corretta in futuro e stare lontano da dichiarazioni come "Spero che questo ti possa aiutare". sono solo rumore. Rispondendo alla domanda, si presume che tu stia tentando di rispondere alla domanda con qualcosa di utile. Dovresti esaminare la tua risposta e correggere gli errori grammaticali minori che non ho corretto e fornire schermate del processo. Questa volta ho corretto la formattazione per te, non lo farò più, credo fermamente che gli autori dovrebbero essere tenuti a risolvere le proprie risposte e domande.
Ramhound,

E non è così semplice, questo non aggiorna correttamente i collegamenti simbolici, quindi si finisce con 3.4 e 3.5 fianco a fianco. Python2 è generalmente affiancato a python3 comunque, non aggiorniamo Python2 a Python3, migriamo il nostro lavoro.
mckenzm,

0

Nel singolo caso in cui stai eseguendo una versione LTS, il tuo python potrebbe essere indietro rispetto a una versione minore, diciamo 2.7.5 anziché 2.7.10.

Una possibilità sarebbe quella di aggiornare il sistema :

  • set prompt=normalin/etc/update-manager/release-upgrades
  • aggiornare il sistema
    • dalla riga di comando, è possibile digitare sudo do-release-upgradeper fare in modo che il gestore aggiornamenti faccia il proprio lavoro per eseguire l'aggiornamento alla versione più recente (= non LTS).
    • la soluzione GUI utilizza Update Manager

Come sempre durante l'aggiornamento, dai un'occhiata alle note di rilascio , poiché in alcuni casi l'aggiornamento potrebbe danneggiare il tuo sistema, vedi il commento di @ Gino .


Amico, ho provato la tua modifica e si è rotto il mio sistema Ubuntu 14.04! Fondamentalmente, ha tentato di aggiornare da 14.04 a Ubuntu 15 e non è stato in grado di farlo con successo, lasciando il mio sistema in uno stato a metà strada in cui il login grafico non funzionava più - ad esempio, accedevo tramite il login grafico e si avviava tornerò allo stesso login grafico. Ho appena trascorso l'ultima ora + a reinstallare Ubuntu 14.04 sul mio computer per correggere la tua presunta soluzione .
Gino,

@Gino: grazie per il feedback. Hai dato un'occhiata a askubuntu.com/questions/612973/… , askubuntu.com/questions/223501/… e alle note di rilascio? Si è verificato un problema con "il driver fglrx di AMD". Vorresti qualche altro aiuto?
serv-inc,

Penso che il tuo suggerimento di eludere i normali controlli di sicurezza, consentendo in tal modo un upgrade a una versione non LTS sia pieno di pericoli. Ad oggi, non so perché l'aggiornamento non è riuscito, perché non ha mostrato alcun messaggio di errore diagnosticabile. Invece, ho finito con un sistema che non era più utilizzabile. Se ricordo bene, ho finito per rieseguire l'installazione di Ubuntu con alcune impostazioni che sono state in grado di ripristinare la maggior parte del mio sistema. E, come nota a margine, sono un programmatore professionista, quindi generalmente conosco il mio modo di aggirare un sistema Linux.
Gino,

@Gino: questa sembra essere la procedura standard per passare da LTS a non LTS. E '[cambia] il livello di consapevolezza delle nuove uscite. Si può impostare questo su versioni "supportate" (regolari), versioni "solo a lungo termine" (LTS) o addirittura "niente" (nessun aggiornamento importante). "" Per la citazione, consultare askubuntu.com/questions/240160/… . Utilizza l'upgrade manager del sistema Sfortunatamente, nel tuo caso, l'aggiornamento (predefinito) non ha funzionato, il che potrebbe essere dovuto a un driver grafico difettoso (vedi i link sopra)
serv-inc,
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.