Domanda Come posso installare l'ultimo Python 2.7.X o 3.X su Ubuntu?


Voglio installare l'ultimo tarball di Python su Ubuntu, scaricato da http://python.org/download/.

È un modo corretto di installare?

./configure
make
make install

Altrimenti, come faccio?


157
2018-02-05 12:02


origine


Un tempo, immagino che questo sia stato chiesto per installare un più nuovo versione di Python su Ubuntu. Ora, è necessario installare un più vecchio  versione di Python su Ubuntu (perché noi ancora richiede python 2.7 per un sacco di cose) ... tl; dr: questa risposta non è più attuale / corretta. Invece, assumendo python3 è installato di default (e forse un python2.x minimo), quindi eseguire: sudo apt-get install python-2.7 python-pip - michael
@ michael_n di cosa stai parlando? compilare dalla fonte non rende questa risposta errata o obsoleta. è solo un metodo diverso. puoi usare apt per automatizzare il processo per te, se necessario. - jargonjunkie
usi quello di cui hai bisogno Non vedo davvero come questo supporti la tua affermazione di questo essere obsoleto. come hai detto tu stesso, lo usi quando è necessario perché potrebbe non essere disponibile. Ad esempio, il sottosistema windows per linux utilizza alcuni pacchetti software datati anche se la distribuzione è ubuntu 16.04.1 (beta) e utilizza python2.6.2, e python3 anche se la corrente è python2.7.12. In tal caso, dovrei compilare se voglio pacchetti aggiornati - jargonjunkie
@jargonjunkie sei fuori tema, ma corretto. Se la domanda è "come installo python 2.7 su ubuntu 16.04+" che è (dal 16.04 è ora disponibile, che è il mio punto), quindi semplicemente sudo apt-get install python2.7. Questo non è solo più semplice, è l'unica risposta corretta, poiché è l'unico modo in cui sarete in grado di gestire l'installazione di moduli python tramite apt-get e le loro dipendenze a loro volta. - michael
spero che questo aiuti a illustrare (risposta aggiunta). l'ecosistema python è molto particolare / pignolo, e puoi facilmente entrare in un "inferno di dipendenza" se non costruisci attentamente il tuo ambiente python askubuntu.com/a/831075/17060 - michael


risposte:


Innanzitutto, installa alcune dipendenze:

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Quindi scaricare utilizzando il seguente comando:

version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz

Estrai e vai alla directory:

tar -xvf Python-$version.tgz
cd Python-$version

Ora, installa usando il comando che hai appena provato, usando checkinstall invece per renderlo più facile da disinstallare se necessario:

./configure
make
sudo checkinstall

Modificare version a qualsiasi versione tu abbia bisogno (version=2.7.1 o version=3.6.0, per esempio).


184
2018-02-05 12:20



Uso sudo make install e non altinstall per impostarlo come versione python predefinita - Shagun Sodhani
uso CXX=g++ ./configure se ./configure emette un avviso dicendo che g ++ non è stato trovato - srj
dopo aver installato come indicato sopra, quali comandi devo eseguire nella console per verificare che effettivamente sia installato? - Ciwan
È piuttosto straordinario che la migliore risposta alla semplice domanda "come installare Python" porti un avvertimento così terribile, è come "questo è il modo migliore che conosciamo per installare Python e potrebbe benissimo rompere il tuo sistema" ... È anche molto sorprendente che il sito ufficiale di Python abbia un sacco di download e non una singola pagina di istruzioni per l'installazione. - patb
pat - la migliore risposta alla semplice domanda "come installare python" è sudo apt-get install python, la risposta più complicata è "come installare il più recente python ", l'implicazione è" dalla fonte ". Avrai lo stesso problema su qualsiasi sistema operativo, a meno che tu non stia installando binari precompilati da una terza parte, il che, ancora una volta, è rischioso su qualsiasi sistema operativo (e varia notevolmente tra i vari SO) Anche questa risposta è del 2012, per i consigli più recenti, vedi askubuntu.com/questions/101591/... - michael


A meno che tu non abbia davvero il desiderio ardente di compilarlo da solo, il modo preferito è usare il DeadSnakes PPA installare le versioni di Python che non sono incluse di default:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7

Altre versioni, come python2.4 o python3.6, ecc. sono anche disponibili.


159
2018-02-05 14:40



Nota del programma: Se siete su 10.04, potrebbe essere necessario installare le proprietà di python-software prima di usare add-apt-repository. - Craig Maloney
Si consiglia di creare python nell'ambiente locale, invece di installarlo da binari pre-build - pylover
+1 :) really have a burning desire to compile it yourself - Watt
Manca di menzionare questo: 1. il ppa non è ufficialmente approvato, quindi il modo più sicuro è quello di creare dalla fonte. 2. questo si tradurrà in un python globale, che non-sudonon può modificare o installare pacchetti, non uno locale. 3. Più pitoni possono essere installati localmente in diversi luoghi costruendo dalla sorgente. - Ioannis Filippidis
apt-get install python2.7Installa il binario python2.7 invece di python ... brutto !! - Dhawal


Continuando a documentare questo per le ultime versioni di Ubuntu1 : per il server Ubuntu 16.04.1, il Python predefinito è la versione 3.5 e Python 2.7 non installato di default. In una nuova installazione (nota che non c'è nemmeno un python eseguibile):

$ type python3 python2 python 
python3 is /usr/bin/python3
-bash: type: python2: not found
-bash: type: python: not found

$ python3 --version 
Python 3.5.2

$ python --version 
The program 'python' can be found in the following packages:
 * python-minimal
 * python3
Try: sudo apt install <selected package>

Nota: prima di continuare, probabilmente vorrai fare un rapido sudo apt-get update, sudo apt-get upgrade, e sudo apt-get dist-upgrade (si prega di annotare esattamente cosa stanno effettivamente facendo questi comandi, sto assumendo una nuova installazione qui.)

Installare python 2.7 è facile come:

$ sudo apt-get install python2.7

L'output iniziale dell'installazione di python 2.7 è il seguente:

$ sudo apt-get install python2.7
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7-minimal
Suggested packages:
  python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,735 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc, etc...

Dopo aver installato python 2.7,

$ type python3 python2.7 python3.5 python2 python
python3 is /usr/bin/python3
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5
bash: type: python2: not found
bash: type: python: not found

Ma c'è ancora un problema, dal momento che non è ancora possibile installare i moduli PyPI tramite pip - Ad esempio, se desideri un notebook jupyter o l'ultimo scipy o numpy (ecc.), devi installare pip e poi pip install quelli, e ancora si rivolgono a apt-get per installare qualsiasi necessario sistema dipendenze, come le librerie di sistema core o graphviz.

$ type pip3 pip2 pip
bash: type: pip3: not found
bash: type: pip2: not found
bash: type: pip: not found

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

Quindi, per installare pip, di nuovo, è facile come sudo apt-get install python-pip :

$ sudo apt-cache search -n pip | egrep '^python[0-9]*-pip'
python-pip - alternative Python package installer
python-pip-whl - alternative Python package installer
python3-pip - alternative Python package installer - Python 3 version of the package

Avrai bisogno di entrambi python-pip per il Python 2.7 pip e il python3-pip per il Python 3 pip. L'installazione via apt-get è sicuro di installare le dipendenze richieste; ad esempio, ecco l'output per l'installazione di pip2:

$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl
  python-pkg-resources python-setuptools python-wheel python2.7-dev
Suggested packages:
  binutils-doc debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib
  autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-locales libgcc1-dbg
  libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc
  python-tk python-setuptools-doc
The following NEW packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip
  python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev
0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded.
Need to get 61.1 MB of archives.
After this operation, 169 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc...

Di conseguenza, succede qualcosa di interessante: ora hai lo "standard" (e PEP consigliato) python2 e python3 (che sono solo collegamenti simbolici a python 2.7 e python 3.5):

$ type python3 python2 python python2.7 python3.5 
python3 is /usr/bin/python3
python2 is /usr/bin/python2
python is /usr/bin/python
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5

Lo vorrai anche tu sudo apt-get install python3-pip; prima di installare, hai:

$ type pip pip2 pip3
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
-bash: type: pip3: not found

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

Dopo l'installazione pip3,

$ sudo apt-get install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-dev
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.0 MB of archives.
After this operation, 55.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
...etc...

Le versioni risultanti:

$ type python python2 python3 pip pip2 pip3
python is /usr/bin/python
python2 is hashed (/usr/bin/python2)
python3 is hashed (/usr/bin/python3)
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
pip3 is /usr/bin/pip3

$ pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

Un'ultima cosa da fare prima di iniziare a installare tutti i tuoi moduli pyPI Python preferiti: probabilmente dovrai aggiornare pip in sé (sia pip2 che pip3, separatamente, inoltre, non importa se pip è invocato tramite il python eseguibili o il pip eseguibili, gli aggiornamenti effettivi sono archiviati in /usr/lib):

$ sudo -H python2 -m pip install --upgrade pip
...
$ sudo -H python3 -m pip install --upgrade pip
...

Ora puoi eseguire l'autonomo pip o la versione in bundle all'interno python (attraverso python -m pip {command}).


[1] Riassunto storico: Ubuntu precedente aveva solo Python 2.6, quindi tutti i vari metodi per installare Python 2.7+. Successivamente, dopo che Python 2.7 è stato aggiunto agli archivi pubblici, abbiamo ancora avuto la stessa sfida di installare il più recente Python 2.7 con le ultime correzioni, che erano (troppo) spesso necessarie. La situazione odierna è molto migliore / più semplice: gli attuali Python 2.7 e 3.5 (fondamentalmente le uniche due versioni della piattaforma Python che ci interessano) che ora sono nei repository pubblici sono molto stabili, quindi ora dobbiamo solo preoccuparci di installare l'ultima pitone moduli, non l'ultimo pitone. Così ora il "problema dell'ultima versione" di Python si è spostato in parte fuori dai repository OS e apt e in PyPI & pip.)


24
2017-09-29 08:50



Seguendo queste istruzioni su Ubuntu 16.04.1 LTS, con successo setup python 2.7 e pip come questo: sudo apt-get install python2.7; sudo apt-get install python-pip; sudo -H python2 -m pip installa --upgrade pip; # Verifica della versione: $ pip --version -> pip 9.0.1 da /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version -> Python 2.7.12 - Robert Lujo
Risposta davvero utile - grazie mille! - Failed Scientist
Perdonate la mia ignoranza, ma potrei sapere cosa significa "hash" quando si mostrano le versioni di Python? - Failed Scientist
@TalhaIrfan È una buona domanda (e, se permetterete una risposta semplificata): quando un comando viene digitato in bash (come con la maggior parte delle shell), il cmd potrebbe essere un alias, una funzione o un file eseguibile trovato nel $PATH. L'env var PATH è una lunga lista di directory con letteralmente migliaia di file al suo interno. Per velocizzare la ricerca dell'eseguibile, la shell utilizza un hash memorizzato nella cache per una rapida ricerca. Potrebbe diventare obsoleto, quindi "hash" ti fa sapere che è "ricordato" questo comando mappato a quel file eseguibile unix.stackexchange.com/questions/5609/... - michael
@gaia potresti voler fare una domanda a parte, poiché potrebbero essere necessari più avanti e indietro per capirlo (o se qualcosa è cambiato da quando ho scritto questo). Forse, per prima cosa verificalo entrambi  pip (2.7) & pip3 (3.x) sono stati completamente installati / aggiornati, e non solo il precedente - vale a dire, sudo apt-get install python-pip python3-pip e sudo -H python2 -m pip install --upgrade pip e sudo -H python3 -m pip install --upgrade pip  ... O se è davvero un problema di autorizzazione (indicato da "funziona con sudo"), allora sarà un po 'più difficile da rintracciare. - michael


12.04

Se stai seguendo La risposta di Achu, quindi il termine libread5-dev dovrebbe essere cambiato in libreadline-gplv2-dev. Quindi il comando completo sarebbe:

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

11
2017-07-26 14:37





Puoi anche scaricarlo e installarlo tramite pyenv

#Install Pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
export PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATH
echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

#Install Python
pyenv install 2.7.8
pyenv global 2.7.8

pyenv install 3.4.5
pyenv global 3.4.5

2
2018-03-30 07:38



Questo è il modo più pulito per ottenere una versione aggiornata di Python su una versione precedente di Ubuntu. Include anche il supporto virtualenv, tramite il pyenv-virtualenv plug-in, che semplifica l'installazione di applicazioni con requisiti di moduli diversi senza interferenze. - RichVel
Due avvertimenti su pyenv: (1) funziona solo da una shell bash (o forse zsh, ma certamente non dash che è / bin / sh su Ubuntu), e (2) richiede una shell di login (ad es. bash --login), che non è sempre facile da raggiungere, ad es. da Ansible. Ideale per l'uso interattivo, meno utile per i server di scripting. - RichVel