Wie installiere ich Python 3.6?

107

Ich möchte das neueste Python installieren, das zum Zeitpunkt dieses Beitrags 3.6 ist. Das Repository gibt jedoch an, dass Python 3.4.2 die neueste Version ist.

Ich habe es versucht:

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

python3 is already the newest version.

$ python -V

Python 3.4.2

Um ein Upgrade auf Python 3.6 auf meiner Windows-Workstation durchzuführen, habe ich einfach eine EXE-Datei heruntergeladen, einige Male auf "Weiter" geklickt und fertig. Was ist das richtige und offiziell akzeptierte Verfahren, um Python 3.6 auf Debian Jessie zu installieren?

dvtan
quelle
6
Das Standard-Debian-Repository enthält Softwarepakete, die speziell für eine bestimmte Debian-Version kompiliert wurden. Mit Ausnahme von Sicherheitsupdates (vorzugsweise nur die wenigen Änderungen, die zum Beheben einer Sicherheitslücke erforderlich sind) sind neue Versionen der meisten Software möglicherweise erst mit der nächsten Hauptversion verfügbar, um mögliche Instabilitäten zu vermeiden.
Phk
@phk Wäre es in diesem Fall nicht ratsam, ein Verhalten wie pip anzunehmen, dh standardmäßig 3.4.2, wenn keine Version angegeben ist, und dem Benutzer zu gestatten, 3.6 explizit mit einem Flag anzufordern? Nur eine Idee :)
DVTAN
1
Dies würde bedeuten, dass die Debian-Leute alle diese Python-Versionen für jede unterstützte Debian-Version warten müssten. Sicher, es könnte automatisiert werden, aber es wäre immer noch viel. Auch die Hauptbenutzer, die neuere Versionen wünschen, könnten genauso gut benutzerdefinierte Repositorys verwenden. Manchmal werden sie von den Software-Autoren selbst für Debian und andere beliebte Linux-Distributionen gepflegt, z. B. im Fall von Oracle VirtualBox .
Phk
1
Python 3.6 (obwohl rc1) ist gerade in Debian experimental angekommen. Es ist wahrscheinlich möglich, es zu Jessie zurückzuportieren, möglicherweise mit einer kleinen Änderung.
Faheem Mitha
Aktualisieren. Dies wurde für mich erfolgreich auf Debian Stall (jessie) fertiggestellt. Dies bedeutet jedoch nicht, dass die Installation erfolgreich ist und keine Probleme verursacht. Ein sinnvoller nächster Schritt wäre, es auf einer stabilen Test-VM zu testen. Interessiert es jemanden?
Faheem Mitha

Antworten:

66

Debian hat Python 3.6 nicht in seinen Repositories, aber das Testen hat es.

$ 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

Sie haben gefragt nach:

das ordnungsgemäße und offiziell akzeptierte Verfahren

Ich muss jedoch darauf hinweisen, dass dies keine offizielle Lösung ist, da sie Test-Repositorys verwendet.

Егор Гвоздиков
quelle
62
Warnung: Dies aktualisiert Ihr System auf einen Hybrid aus der Debian-Version, die Sie gerade ausführen (wahrscheinlich 'stable'), 'unstable' und 'experimental'. Dies wird weitaus schlimmer sein, als nur ein Upgrade von experimentellen Paketen auf instabiles und Cherry-Picking durchzuführen, oder (besser noch, bei stabilem und Cherry-Picking von Backports und / oder instabilem und / oder experimentellem zu bleiben). Ein Rückgriff darauf ist nahezu unmöglich. Es wird NICHT empfohlen, es sei denn, Sie haben viel Erfahrung mit Debian und Debian-Paketen
cas
8
bearbeitete Antwort, um die Standardversion von apt auf stabil zu setzen. und das verrückte 'apt-get upgrade' entfernt (das alles auf die neuesten Versionen aktualisiert, die in unstable oder experimental verfügbar sind, mit Ausnahme von allem, was das Entfernen eines anderen Pakets zur Folge hätte). Das sollte dieses Verfahren viel weniger gefährlich, aber immer noch nicht sicher machen. Und immer noch nicht für Anfänger zu empfehlen. 'experimental' ist nicht für den gelegentlichen Gebrauch gedacht, sondern für seltsame, ungetestete, möglicherweise kaputte Dinge, die selbst in 'unstable' Konflikte verursachen oder Dinge zerbrechen können. Es wird auch als Bereitstellungsbereich für große Upgrades mit mehreren Paketen verwendet.
cas
1
Die bearbeitete Antwort als Python 3.6.2 befindet sich (jetzt) ​​im testingRepository, was für den durchschnittlichen Benutzer sicherer ist.
m4p85r
4
Versuchen Sie dies nicht - es wird ewig dauern, bis Sie den
Vorgang
1
Ist dies immer noch so riskant, wie im August (oder Dezember) 2017 vorgeschlagen? Es ist nicht mehr klar, nachdem @cas seinen Kommentar bearbeitet und abgegeben hat. Kann jemand nachfassen?
Brian Peterson
154

Sie können Python-3.6auf Debian 8 wie folgt installieren :

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

Es wird empfohlen, make altinstallgemäß der offiziellen Website zu verwenden .

Wenn Sie pipeinbezogen werden möchten , müssen Sie --with-ensurepip=installzu Ihrem Konfigurationsaufruf hinzufügen . Weitere Details finden Sie unter ./configure --help.

Warnung: make installKann die Python-Binärdatei überschreiben oder maskieren. make altinstallwird daher statt empfohlen, make installda es nur installiert wird exec_prefix/bin/pythonversion.

Einige Pakete müssen installiert werden, um bekannte Probleme zu vermeiden. Siehe: Allgemeine Build-Probleme (aktualisiert)

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

Alternative von 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

Alternative von openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Aktualisieren

Sie können die neueste python-x.y.z.tar.gzVersion hier herunterladen .

Um eine Standard-Python-Version festzulegen und einfach zwischen diesen zu wechseln, müssen Sie Ihre update-alternativesmit der Mehrfach-Python-Version aktualisieren .

Nehmen wir an, Sie haben die python3.7Debian-Erweiterung installiert. Verwenden Sie den Befehl whereis python, um die Binärdatei ( */bin/python) zu lokalisieren . z.B:

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

Fügen Sie die Python-Versionen hinzu:

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

Das python3.7mit der 50Priorität ist jetzt Ihr Standard-Python, der python -Vdruckt:

Python 3.7.0b2

Um zwischen ihnen zu wechseln, verwenden Sie:

update-alternatives --config python

Beispielausgabe:

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: 
GAD3R
quelle
5
Nicht Debian-Jungs empfehlen checkinstall? Andernfalls ist es ratsam, es auf /usr/localoder zu installieren /opt.
Ivan Anishchuk
3
Laut ./configure --helpPython 3.6 wird /usr/localstandardmäßig installiert .
Markus Strauss
2
Haben Sie Probleme mit dieser Antwort (z. B. SSL-Modul nicht verfügbar oder zlib fehlt)? Siehe: stackoverflow.com/a/41601137/972128
kkurian
11
Haftungsausschluss: Bei einem Gerät mit niedrigem Stromverbrauch wie dem Pi Zero dauert dies über 20 Stunden .
Antoine Lizée
2
Version 3.7ist raus
Timo
32

Die offizielle Empfehlung lautet: "Sie benötigen keine neuere Software."

Leiden Sie nicht unter dem Shiny New Stuff Syndrom - DontBreakDebian | Debian-Wiki

Die meisten Ratschläge auf dieser Seite richten sich danach, was zu tun ist, wenn die Software systemweit verfügbar sein soll, aber ich denke, dass dies in diesem Fall nicht erforderlich ist.

Wenn Sie die Python-Quellen abrufen, den 3.6-Interpreter erstellen, um --prefixzu steuern, wo er endet, und dann virtualenvmit der --pythonOption verwenden, können Sie Python 3.6 verwenden, ohne etwas außerhalb Ihres Projekts zu beeinflussen.

Der Prozess könnte ungefähr so ​​ablaufen:

$ 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

In diesem Fall sollten Sie das --enable-optimizationsFlag im Python- configureSkript berücksichtigen , das einige Funktionen wie die profilgesteuerte Optimierung zu ermöglichen scheint. Es verlängert die Erstellungszeiten, scheint aber nach einigen Benchmarks zu einem um etwa 10% schnelleren Interpreter zu führen.

Gregory Nisbet
quelle
5
Dies folgt der allgemeinen Python-Regel "Praktikabilität schlägt Reinheit". Ich neige dazu, Pythons aus Quellpaketen in / opt / python-xyz zu installieren und dann Anwendungen von seinen eigenen virtuellen Envs auszuführen.
Zgoda
1
Wichtiger Hinweis: Wenn Sie so etwas tun: Stellen Sie sicher, dass jeder Benutzer, unter dem Ihr Python-Prozess ausgeführt wird, die virtuelle Umgebung nicht ändern kann
Gregory Nisbet,
1
Meiner Meinung nach ist dies die beste Antwort.
BringBackCommodore64
Vielen Dank für diesen Rat. In der Vergangenheit habe ich eine Debian-Installation mit systemweitem Addon abgebrochen.
eingefroren
In meiner Installation [venv]$ which pythongibts mich nicht /home/<user>/pythonroot/bin/python, sondern /home/<user>/app/venv/bin/python3... warum?
fror
12

Vielleicht möchten Sie einen Blick darauf werfen pyenv: https://github.com/yyuu/pyenv . So zitieren Sie aus dem pyenvTutorial von Amaral Lab:

Mit Pythonbrew können Sie die globale Python-Version ändern, mehrere Python-Versionen installieren, verzeichnis- (projekt-) spezifische Python-Versionen festlegen und virtuelle Python-Umgebungen ("virtualenvs") erstellen / verwalten. All dies geschieht auf * NIX-artigen Maschinen (Linux und OS X), ohne von Python selbst abhängig zu sein, und es funktioniert auf Benutzerebene - es sind keine sudo-Befehle erforderlich.

schaiba
quelle
3
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzuschließen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert. - Aus der Bewertung
Archemar
Du hast recht, wird die Antwort ändern.
Schaiba
1
Ich denke, er wollte auch die wesentlichen Befehlszeilen mit
einbeziehen
Dies funktioniert gut, außer wenn Sie mit eingebetteten Geräten arbeiten. Um eine Version von Python zu "installieren", wird die Quelle heruntergeladen und lokal kompiliert. Ansonsten ist pyenv eine großartige Wahl und bietet viel Flexibilität, einschließlich der Ausführung verschiedener Python-Versionen in verschiedenen Verzeichnissen und der Bewältigung der sehr lästigen PIP-Probleme.
Brian Bulkowski
11

Mein bevorzugter Weg ist, Anaconda oder Miniconda zu verwenden, um die neueste Version von Python und Paketen auf Debian zu installieren.

Es ist alles ordentlich in einem Ordner aufbewahrt, was es sehr einfach macht, es später zu entfernen, wenn Sie es wünschen. Das Installationsprogramm fügt auch den Pfad zu Ihrem bashrc hinzu (fügen Sie ihn selbst hinzu, wenn Sie eine andere Shell verwenden).

Es wird mit pip und conda geliefert, einem weiteren Paketmanager, der sich für komplexere Pakete wie Numpy eignet. Miniconda ist eine reine Installation, und Anaconda ist eine vollständige Installation mit vielen Paketen, die hauptsächlich für die Datenanalyse entwickelt wurden.

Schnell:

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

Lesen und akzeptieren Sie die Lizenz, wenn Sie den Bash-Pfad nicht verwenden: export PATH="/home/$USER/miniconda3/bin:$PATH"

Prüfung:

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

Installation von PyPi:

# pip install fava

Installieren von conda:

# conda install numpy

Wenn Sie es löschen möchten, entfernen Sie den Ordner ~/miniconda3und den Pfad in Ihrem bashrc.

alexjj
quelle
Nach endlosen Problemen mit der Installation von Python aus dem Quellcode funktionierte diese Version perfekt! Beachten Sie, dass Sie, wenn Sie mit virtualenv (Wrapper) für das Umgebungsmanagement arbeiten möchten, das Verzeichnis der Miniconda-Bibliothek hinzufügen müssen LD_LIBRARY_PATH. ZB: export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"zu deinem hinzufügen .bashrc.
Kontrast
„Der Installer fügt auch den Pfad zu Ihrem bashrc“ Das ist der Hauptgrund ist , warum ich nicht verwenden Anakonda. Das stille Maskieren einer vorhandenen Python-Umgebung ist, gelinde gesagt, nicht gesund.
MisterMiyagi
3

Debian hat kein Python 3.6 in seinen Repositories. Hier ist eine Momentaufnahme des aktuellen Python3-Status:

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

Sie können diese hier überprüfen .

Sie können 3.6 entweder von der Quelle aus installieren oder Linuxbrew für eine Installation im Basisverzeichnis verwenden.

Dennis Chen
quelle
3

Mit diesem

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

Erfolgreich arbeiten.

More: Setze python3.6 als Standard

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

Jetzt sofort :

python --version
Python 3.6
Sean S
quelle
Sollte lautensudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
Deklination
3
Diese Antwort ist die gleiche wie die akzeptierte Antwort, die ein Jahr später kam und dennoch keine korrekten Befehle erteilt.
Um SE zu 마
1

Python 3.6 (obwohl rc1) ist gerade in Debian experimental angekommen. Ich konnte dies erfolgreich auf Debian Stable (Jessie) aufbauen. Siehe die letzten Schritte des Builds, die unten eingefügt werden.

Dies bedeutet jedoch nicht, dass die Installation erfolgreich ist und keine Probleme verursacht. Ein sinnvoller nächster Schritt wäre, es auf einer stabilen Test-VM zu testen. Wenn es jemanden interessiert, könnte ich es versuchen - oder jemand anderes könnte es versuchen.

Eine korrekte Release-Version sollte in Kürze in Debian Unstable eintreffen.

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.
Faheem Mitha
quelle