Come installo l'ultimo Python 2.7.X o 3.X su Ubuntu?

164

Voglio installare l'ultimo tarball di Python su Ubuntu, scaricato da link .

È un modo corretto di installare?

./configure
make
make install

In caso contrario, come faccio?

    
posta mohammads 05.02.2012 - 13:02

6 risposte

187

Per prima cosa 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 scarica usando 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 rendere più facile la disinstallazione, se necessario:

./configure
make
sudo checkinstall

Modifica version per qualsiasi versione di cui hai bisogno ( version=2.7.1 o version=3.6.0 , ad esempio).

    
risposta data Achu 05.02.2012 - 13:20
168

A meno che tu non abbia davvero il desiderio ardente di compilarlo da solo, il modo preferito è utilizzare il PPA DeadSnakes 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

Sono disponibili anche altre versioni, come python2.4 o python3.6 , ecc.

    
risposta data brousch 05.02.2012 - 15:40
24

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

$ 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 di 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 puoi ancora installare i moduli PyPI tramite pip - ad es., se vuoi jupyter notebook, o l'ultimo scipy o numpy (etc), ti consigliamo di installare pip e poi pip install , e continuando a passare a apt-get per installare tutte le dipendenze di sistema necessarie, come le librerie di sistema coreviz o core.

$ 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 sia di python-pip per il Python 2.7% di co_de% sia di pip per il Python 3% di co_de%. L'installazione tramite python3-pip è sicura per 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...

In questo modo accade una cosa interessante: ora hai lo "standard" (e PEP consigliato) pip e apt-get (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

Dovrai anche python2 ; 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 aver installato python3 ,

$ 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)

E un'ultima cosa da fare prima di iniziare a installare tutti i tuoi moduli pyPI Python preferiti: probabilmente dovrai aggiornare pip stesso (sia pip2 che pip3, separatamente, inoltre, non importa se sudo apt-get install python3-pip è invocato tramite gli eseguibili pip3 o gli eseguibili pip , gli aggiornamenti effettivi sono memorizzati in python ):

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

Ora puoi eseguire il% stand-alone di co_de% o la versione inclusa in pip (tramite /usr/lib ).

[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: l'attuale Python 2.7 & amp; 3.5 (fondamentalmente le uniche due versioni della piattaforma Python a cui le persone si interessano) che ora sono nei repository pubblici sono molto stabili, quindi ora dobbiamo solo preoccuparci di installare gli ultimi moduli python, non l'ultimo < em> python . Quindi ora il "problema della versione più recente" di Python ha spostato parzialmente dai repository del sistema operativo & amp; pip e in PyPI & amp; % Co_de%).

    
risposta data michael 29.09.2016 - 10:50
11

12.04

Se stai seguendo la risposta di Achu , il termine libread5-dev deve essere modificato 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
    
risposta data ThatGuy 26.07.2012 - 16:37
4

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
    
risposta data Whispered 30.03.2017 - 09:38
0

Principalmente uno specchio di questa risposta con un'introduzione ottimizzata

Raccomando pyenv . Automatizza il processo di compilazione oltre a installare le dipendenze dell'intestazione (vedi sotto). Puoi creare e installare una nuova (o vecchia) versione di Python semplicemente dicendo pyenv install 3.6.0 . Tutto funziona come utente, quindi non devi preoccuparti di incasinando il Python usato da Ubuntu stesso.

Diversamente da alcune delle opzioni basate su apt-repo (ad esempio deadsnakes), generalmente funzionerà lo stesso giorno di una release dopo un pyenv update perché non è necessario attendere che qualcun altro lo impacchetta. Vedi tutte le versioni che puoi installare con pyenv install --list

Installa pyenv

  1. Installa strumenti e intestazioni necessarie per costruire CPythons (Python esotici come PyPy o Jython possono avere altre dipendenze). Git è usato da pyenv, in più abilita anche le build / installazioni dei rami sorgente, quindi puoi installare qualsiasi cosa sia 3.8, ovvero il ramo master di CPython appena uscito da GitHub:

    sudo apt-get install -y git
    sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                            libffi-dev libsqlite3-dev tk-dev
    
    # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)
    sudo apt-get install -y libpng-dev libfreetype6-dev    
    
  2. Esegui lo script di installazione (installa pyenv e alcuni plugin pyenv molto utili dall'autore originale, vedi qui per altro)

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    
  3. Aggiungi le righe di init al tuo ~/.profile o ~/.bashrc (lo menziona alla fine dello script di installazione):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  4. Riavvia la shell (chiudi & amp; apri o exec $SHELL ) o ricarica lo script del profilo. (con ad esempio source ~/.bashrc )

Fatto!

Impostazione di un ambiente

Per non toccare il sistema Python (generalmente una cattiva idea, i servizi a livello di sistema operativo potrebbero basarsi su alcune versioni specifiche della libreria, ecc.) creare il proprio ambiente, è facile! Ancora meglio, no sudo , per esso o pip installazioni!

  1. Installa la tua versione preferita di Python (questo scaricherà l'origine e la costruirà per il tuo utente, nessun input richiesto)

    pyenv install 3.6.0
    
  2. Rendilo un virtualenv in modo che tu possa crearne altri più tardi, se lo desideri

    pyenv virtualenv 3.6.0 general
    
  3. Rendilo globalmente attivo (per il tuo utente)

    pyenv global general
    
  4. Fai quello che vuoi con Python / pip, ecc. È tuo.

Se vuoi ripulire le tue librerie in un secondo momento, puoi eliminare virtualenv ( pyenv uninstall general ) o crearne uno nuovo ( pyenv virtualenv 3.6.0 other_proj ). Puoi anche avere ambienti per-directory attivi: pyenv local other_proj lascerà cadere un file .python-version nella tua cartella corrente e ogni volta che invochi Python o utilità Python installate da pip da esso o sotto di esso, saranno pigiati da pyenv.

Risoluzione dei problemi

  • bash: pyenv: command not found , fish: Unknown command 'pyenv'

    1. Controlla il $PATH , dovrebbe esserci una voce che termina con qualcosa come .pyenv/bin . Se manca, assicurati di aver seguito # 3 AND # 4 (riavvia la shell) in Installa pyenv sopra.
  • pyenv: no such command 'virtualenv'

    1. Se non hai usato lo script di installazione, probabilmente hai installato solo il pacchetto pyenv di root. Vedi pyenv-virtualenv per le istruzioni per aggiungere il plugin
    2. Se hai utilizzato lo script di installazione, controlla se viene visualizzato con pyenv commands .
risposta data 15.10.2018 - 22:05

Leggi altre domande sui tag