Come installare Python 3.6?


107

Vorrei installare l'ultimo Python, che è 3.6 al momento di questo post. Tuttavia, il repository sta dicendo che Python 3.4.2 è la versione più recente.

Ho provato:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2

Per eseguire l'aggiornamento a Python 3.6 sulla mia workstation Windows, ho semplicemente scaricato un exe, fatto clic su "Avanti" alcune volte e il gioco è fatto. Qual è la procedura corretta e ufficialmente accettata per installare Python 3.6 su Debian Jessie?


6
I repository Debian predefiniti contengono pacchetti software appositamente compilati per una determinata versione di Debian. Fatta eccezione per gli aggiornamenti di sicurezza (preferibilmente solo il minor numero di modifiche necessarie per risolvere un problema di sicurezza), le nuove versioni della maggior parte dei software potrebbero non essere disponibili fino alla prossima versione principale per evitare potenziali instabilità.
phk,

@phk In tal caso, non sarebbe prudente adottare un comportamento simile a pip, ovvero l'impostazione predefinita 3.4.2 quando non viene specificata una versione e consentire all'utente di richiedere esplicitamente 3.6 con un flag? Solo un'idea :)
dvtan il

1
Ciò significherebbe che la gente di Debian dovrebbe mantenere tutte queste versioni di Python per ogni versione di Debian supportata. Certo, potrebbe essere automatizzato ma sarebbe ancora molto. Inoltre, gli utenti esperti che desiderano versioni più recenti potrebbero utilizzare anche repository personalizzati. A volte, gli stessi autori del software li stanno mantenendo per Debian e altre diffuse distribuzioni Linux, ad esempio nel caso di Oracle VirtualBox .
phk,

1
Python 3.6 (sebbene rc1) è appena arrivato in Debian sperimentale. Probabilmente è possibile effettuare il backport su Jessie, possibilmente con un piccolo ritocco.
Faheem Mitha,

Aggiornare. Questo ha finito di costruire con successo su Debian stable (jessie). Tuttavia, ciò non significa che verrà installato correttamente e non causerà problemi. Un prossimo passo ragionevole sarebbe testarlo su una VM di prova stabile. Qualcuno se ne frega?
Faheem Mitha,

Risposte:


66

Nota editoriale:
leggi i commenti a questa risposta.


Debian non ha Python 3.6 nei suoi repository, ma i test lo hanno.

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V

Hai chiesto:

la procedura corretta e ufficialmente accettata

ma devo sottolineare che questa non è una soluzione ufficiale perché utilizza i repository di prova.


62
Attenzione: questo aggiornerà il tuo sistema a un ibrido di qualsiasi versione debian che stai eseguendo ora (probabilmente 'stabile') più 'instabile' più 'sperimentale'. Questo sarà molto peggio del semplice dist-upgrade a unstable e cherry-picking alcuni pacchetti da sperimentale, o (meglio ancora, stare con stabile e cherry-picking da backport e / o unstable e / o sperimentale). Il ritorno da questo sarà quasi impossibile. NON raccomandato a meno che tu non abbia MOLTA esperienza con gli imballaggi debian e debian
cas

8
risposta modificata per impostare la versione predefinita di apt su stable. e rimosso il folle 'apt-get upgrade' (che aggiorna tutto alle ultime versioni disponibili in unstable o sperimentale, ad eccezione di tutto ciò che potrebbe causare la rimozione di un altro pacchetto). Ciò dovrebbe rendere questa procedura molto meno pericolosa ma ancora non sicura. E ancora non raccomandato per i principianti. "sperimentale" non è per uso casuale, è per cose strane, non testate, forse rotte che possono essere in conflitto o spezzare le cose anche in "instabili". Viene anche utilizzato come area di gestione temporanea per grandi aggiornamenti multi-pacchetto.
Cas

1
la risposta modificata come python 3.6.2 è (ora) nel testingrepository che è più sicuro per l'utente medio.
m4p85r,

4
Non provarlo, ci vorranno anni per annullare
user3728501

2
A partire dal 15/09/2018 è ancora rischioso: ho provato questo su un tratto Raspberry Pi con Debian e ho riscontrato errori di segmentazione dopo l'aggiornamento di Python 3.6 dai test estratti da un libc6 e libc6-dev aggiornati.
Drott,

154

È possibile installare Python-3.6su Debian 8 come segue:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6

Si consiglia di utilizzare make altinstallsecondo il sito Web ufficiale .

Se si desidera pipessere inclusi, è necessario aggiungere --with-ensurepip=installalla chiamata di configurazione. Per maggiori dettagli vedi ./configure --help.

Attenzione: make installpuò sovrascrivere o mascherare il binario di Python. make altinstallè quindi consigliato anziché make installpoiché si installa solo exec_prefix/bin/pythonversion.

Alcuni pacchetti devono essere installati per evitare alcuni problemi noti, vedere: Problemi di build comuni (aggiornati)

Ubuntu / Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev

Alternativa di libreadline-dev:

sudo apt install libedit-dev

Fedora / CentOS / RHEL (aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel

Alternativa di openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Aggiornare

Puoi scaricare le ultime python-x.y.z.tar.gzda qui .

Per impostare una versione predefinita di Python e passare facilmente da una all'altra, devi aggiornare la tua update-alternativescon la versione Python multipla.

Supponiamo che tu abbia installato il python3.7tratto on debian, usa il comando whereis pythonper localizzare il binario ( */bin/python). per esempio:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5

Aggiungi le versioni di Python:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30

Il python3.7con la 50priorità è ora il tuo pitone di default, la python -Vstampa volontà:

Python 3.7.0b2

Per passare da uno all'altro, utilizzare:

update-alternatives --config python

Uscita campione:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

5
Ragazzi debian non raccomandano checkinstall? Altrimenti, sarebbe saggio installarlo su /usr/localo /opt.
Ivan Anishchuk,

3
Secondo ./configure --helpPython 3.6 si installa /usr/localper impostazione predefinita.
Markus Strauss,

3
Problemi con questa risposta (ad es. Modulo SSL non disponibile o zlib mancante)? Vedi: stackoverflow.com/a/41601137/972128
kkurian

11
Disclaimer: ci vogliono oltre 20 ore su un dispositivo a bassa potenza come il Pi zero.
Antoine Lizée,

2
la versione 3.7è disponibile
Timo

32

La raccomandazione ufficiale è "in realtà non hai bisogno di software più recente"

Non soffrire di Shiny New Stuff Syndrome - DontBreakDebian | Debian Wiki

La maggior parte dei consigli su quella pagina è orientata verso cosa fare se si desidera che il software sia disponibile a livello di sistema, ma non credo sia necessario in questo caso.

Se prendi i sorgenti di Python, costruisci l'interprete 3.6 usando --prefixper controllare dove finisce, e poi usa virtualenvcon l' --pythonopzione, allora puoi usare Python 3.6 senza influenzare nulla al di fuori del tuo progetto.

Il processo potrebbe andare in questo modo:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python

Se hai intenzione di farlo, potresti prendere in considerazione la --enable-optimizationsbandiera nello configurescript Python , che sembra abilitare alcune funzionalità come l'ottimizzazione guidata dal profilo. Aumenta i tempi di costruzione ma sembra tradursi in un interprete più veloce del 10% circa secondo alcuni parametri di riferimento.


5
Ciò segue la regola generale di Python "La praticità batte la purezza". Tendo a installare Pythons dai pacchetti sorgente in / opt / python-xyz e quindi eseguire applicazioni dai propri virtualenvs.
zgoda,

1
Nota importante: se hai intenzione di fare qualcosa del genere: assicurati che qualunque utente esegua il tuo processo Python in quanto non può modificare virtualenv
Gregory Nisbet

1
Secondo me questa è la risposta migliore.
BringBackCommodore64

Grazie per questo consiglio In passato ho rotto l'installazione di debian con un addon a livello di sistema.
Congelato l'

Nella mia installazione [venv]$ which pythonnon darmi /home/<user>/pythonroot/bin/python, ma /home/<user>/app/venv/bin/python3invece ... perché?
Congelato l'

12

Potresti dare un'occhiata a pyenv: https://github.com/yyuu/pyenv . Per citare il pyenvtutorial di Amaral Lab:

Precedentemente noto come Pythonbrew, pyenv consente di modificare la versione globale di Python, installare più versioni di Python, impostare versioni di Python specifiche per directory (progetti) e sì creare / gestire ambienti virtuali di Python ("virtualenvs"). Tutto questo viene fatto su macchine in stile * NIX (Linux e OS X) senza dipendere da Python stesso e funziona a livello di utente, senza bisogno di alcun comando sudo.


3
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
Archemar,

Hai ragione, cambierà la risposta.
Schaiba,

1
Penso che intendesse includere anche le linee di comando essenziali ...
not2qubit

Funziona bene, tranne quando hai a che fare con dispositivi integrati. Per "installare" una versione di Python, il sorgente viene scaricato e compilato localmente. Oltre a ciò, pyenv è un'ottima scelta e ha molta flessibilità, inclusa l'esecuzione di diverse versioni di Python in diverse directory e la gestione dei fastidiosi problemi PIP.
Brian Bulkowski,

11

Il mio modo preferito è usare Anaconda o Miniconda per mantenere l'ultima versione di python e pacchetti installati su Debian.

È tutto ben tenuto in una cartella che lo rende molto facile da rimuovere in seguito, se lo si desidera. Il programma di installazione aggiunge anche il percorso a bashrc (aggiungilo tu stesso se usi un'altra shell).

Viene fornito con pip, e anche conda che è un altro gestore di pacchetti che può essere buono per pacakge più complessi come numpy. Miniconda è un'installazione bare bones e Anaconda è un'installazione completa con molti pacchetti, progettata principalmente per l'analisi dei dati.

Velocemente:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Leggi e accetta la licenza, se non stai usando bash aggiungi percorso: export PATH="/home/$USER/miniconda3/bin:$PATH"

Test:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

Installa da PyPi:

# pip install fava

Installa da conda:

# conda install numpy

Quando vuoi eliminarlo, rimuovi la cartella ~/miniconda3e il percorso nel tuo bashrc.


Dopo infiniti problemi con l'installazione di Python dal sorgente, questa versione ha funzionato perfettamente! Si noti che se si desidera lavorare con virtualenv (wrapper) per la gestione dell'ambiente, è necessario aggiungere il direcotry della libreria miniconda LD_LIBRARY_PATH. Ad esempio: aggiungi export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"al tuo .bashrc.
jrast

"L'installer aggiunge anche il percorso al tuo bashrc" Questo è il motivo principale per cui non uso anaconda. Il mascheramento silenzioso di un ambiente Python esistente non è salutare, per non dire altro.
Mister Miyagi,

3

Debian non ha Python 3.6 nei suoi repository. Ecco un'istantanea dell'attuale stato di Python3:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

Puoi verificarli qui .

Puoi installare 3.6 sia dal sorgente, sia usando qualcosa come Linuxbrew per l'installazione di una directory home.


3

Con questo

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

Lavorare con successo.

Altro: imposta python3.6 come predefinito

sudo alias python=/usr/bin/python3.6

Proprio adesso :

python --version
Python 3.6

Dovrebbe leggeresudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
declinazione

3
Questa risposta è la stessa della risposta accettata, arrivata un anno dopo, e tuttavia non riesce a dare i comandi corretti.
A SE il

1

Python 3.6 (sebbene rc1 ) è appena arrivato in Debian sperimentale. Sono stato in grado di costruirlo con successo su Debian stable (jessie). Vedi i passaggi finali della build incollati di seguito.

Tuttavia, ciò non significa che verrà installato correttamente e non causerà problemi. Un prossimo passo ragionevole sarebbe testarlo su una VM di prova stabile. Se qualcuno se ne frega, potrei provarlo - o qualcun altro potrebbe provare.

Una versione di rilascio corretta dovrebbe arrivare a breve in Debian instabile.

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.

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.