Wie installiere ich das neueste Python 2.7.X oder 3.X unter Ubuntu?

183

Ich möchte den neuesten Python-Tarball unter Ubuntu installieren, der von http://python.org/download/ heruntergeladen wurde .

Ist dies eine korrekte Installationsmethode?

./configure
make
make install

Wenn nicht, wie mache ich das?

Mohammads
quelle
1
Ich stelle mir einmal vor, dass dies gefragt wurde, um eine neuere Version von Python auf Ubuntu zu installieren . Jetzt muss eine ältere Version von Python unter Ubuntu installiert werden (da wir für viele Dinge immer noch Python 2.7 benötigen) ... tl; dr: Diese Antwort ist nicht mehr aktuell / korrekt. Nehmen wir stattdessen an, dass python3 standardmäßig installiert ist (und möglicherweise ein minimales python2.x), und führen Sie dann sudo apt-get install python-2.7 python-pip
Folgendes aus
@michael_n wovon redest du? Durch das Kompilieren aus dem Quellcode wird diese Antwort nicht falsch oder veraltet. Es ist nur eine andere Methode. Sie können apt verwenden, um den Prozess bei Bedarf für Sie zu automatisieren.
Du benutzt was du brauchst. Ich verstehe nicht wirklich, wie dies Ihre Behauptung stützt, dass dies veraltet ist. Wie Sie selbst gesagt haben, verwenden Sie es, wenn Sie es benötigen, da es möglicherweise nicht verfügbar ist. Beispielsweise verwendet das Windows-Subsystem für Linux einige veraltete Softwarepakete, obwohl die Distribution Ubuntu 16.04.1 (Beta) und Python 2.6.2 verwendet, und Python3, obwohl die aktuelle Version Python 2.7.12 ist. In diesem Fall sollte ich kompilieren, wenn ich aktuelle Pakete haben
1
@ Jargonjunkie Sie sind off-Topic, aber richtig. Wenn die Frage lautet : „Wie installiere ich Python 2.7 auf Ubuntu 16.04+“ , die es (seit 16.04 jetzt verfügbar ist, was mein Punkt ist), dann wird man einfach sudo apt-get install python2.7. Dies ist nicht nur einfacher, sondern auch die einzig richtige Antwort, da Sie nur so in der Lage sind, Python-Module über apt-get und ihre Abhängigkeiten zu installieren.
Michael
hoffe, dies hilft zu veranschaulichen (zusätzliche Antwort). Das Python-Ökosystem ist sehr speziell / heikel, und Sie können leicht in die "Abhängigkeitshölle" geraten, wenn Sie Ihre Python-Umgebung nicht sorgfältig aufbauen. askubuntu.com/a/831075/17060
michael

Antworten:

199

Installieren Sie zunächst einige Abhängigkeiten:

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

Dann laden Sie mit dem folgenden Befehl:

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

Extrahieren Sie und gehen Sie in das Verzeichnis:

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

Installieren Sie jetzt mit dem Befehl, den Sie gerade ausprobiert haben. Verwenden Sie checkinstallstattdessen, um die Deinstallation bei Bedarf zu vereinfachen:

./configure
make
sudo checkinstall

Wechseln Sie versionzu der Version, die Sie benötigen ( version=2.7.1oder version=3.6.0zum Beispiel).

Achu
quelle
20
Verwenden sudo make installund nicht altinstallals Standard-Python-Version
festlegen
use CXX=g++ ./configureif ./configure gibt eine Warnung aus, dass g ++ nicht gefunden wurde
srj
2
Welche Befehle führe ich nach der Installation in der Konsole aus, um zu überprüfen, ob sie tatsächlich installiert ist?
J86
9
Es ist ziemlich außergewöhnlich, dass die beste Antwort auf die einfache Frage "Wie installiere ich Python?" Eine so schreckliche Warnung enthält Sehr überraschend, dass die offizielle Python-Website eine Menge Downloads und keine einzige Seite mit Installationsanweisungen enthält.
patb
4
pat - die beste Antwort auf die einfache Frage "Wie installiere ich Python?" ist sudo apt-get install python, die kompliziertere Antwort lautet "Wie installiere ich den neuesten Python?" Sie haben das gleiche Problem auf jedem Betriebssystem, es sei denn, Sie installieren vorkompilierte Binärdateien von einem Drittanbieter, was wiederum auf jedem Betriebssystem ein Risiko darstellt (und von Betriebssystem zu Betriebssystem sehr unterschiedlich ist). Auch diese Antwort stammt aus dem Jahr 2012; Für neuere Ratschläge siehe askubuntu.com/questions/101591/…
Michael
181

Wenn Sie nicht wirklich Lust haben, es selbst zu kompilieren, sollten Sie die DeadSnakes-PPA verwenden , um Versionen von Python zu installieren, die nicht standardmäßig enthalten sind:

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

Andere Versionen wie python2.4oder python3.6usw. sind ebenfalls erhältlich.

brousch
quelle
13
Programmhinweis: Wenn Sie mit 10.04 arbeiten, müssen Sie möglicherweise die Python-Software-Eigenschaften installieren, bevor Sie das Add-Apt-Repository verwenden können.
Craig Maloney
3
Es wird empfohlen, Python in Ihrer lokalen Umgebung zu erstellen, anstatt es von vorab erstellten Binärdateien zu installieren
pylover
16
+1 :)really have a burning desire to compile it yourself
Watt
5
Verpasst zu erwähnen, dass: 1. die ppanicht offiziell gebilligt ist, so ist der sicherste Weg, von der Quelle zu bauen. 2. Dies führt zu einem globalen Python, in dem sudoBenutzer keine Pakete ändern oder installieren können, und nicht zu einem lokalen Python . 3. Mehrere Pythons können lokal an verschiedenen Orten installiert werden, indem sie aus dem Quellcode erstellt werden.
Ioannis Filippidis
2
apt-get install python2.7Dies installiert die Binärdatei python2.7 anstelle von python ... hässlich !!
Dhawal
26

Weitere Informationen zu den neuesten Ubuntu-Versionen 1 : Für den Ubuntu 16.04.1-Server ist Python standardmäßig Version 3.5 und Python 2.7 nicht standardmäßig installiert. Bei einer Neuinstallation (beachten Sie, dass es nicht einmal eine pythonausführbare Datei gibt):

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

Hinweis: Bevor Sie fortfahren, werden Sie wahrscheinlich eine schnelle tun wollen sudo apt-get update, sudo apt-get upgradeund sudo apt-get dist-upgrade(bitte tun Anmerkung genau das, was diese Befehle sind in der Tat zu tun, und ich gehe davon aus hier eine neue Installation.)

Die Installation von Python 2.7 ist so einfach wie:

$ sudo apt-get install python2.7

Die erste Ausgabe der Installation von Python 2.7 sieht folgendermaßen aus:

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

Nach der Installation von 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

Es gibt jedoch immer noch ein Problem, da Sie PyPI-Module noch nicht über installieren können. pipWenn Sie z. B. ein Jupyter-Notebook oder das neueste Scipy oder Numpy (usw.) möchten, möchten Sie diese installieren pipund pip installwenden sich dann weiterhin an apt-getum alle benötigten Systemabhängigkeiten wie graphviz oder Kernsystembibliotheken zu installieren.

$ 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

Die Installation von pip ist also wieder so einfach wie 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

Sie benötigen sowohl python-pipfür Python 2.7 pipals auch python3-pipfür Python 3 pip. Die Installation über apt-getist sicher, dass die erforderlichen Abhängigkeiten installiert werden. Hier ist die Ausgabe für die Installation von 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...

Daraus ergibt sich ein interessantes Ereignis: Sie haben jetzt den "Standard" (und PEP empfohlen) python2und python3(die sind nur Symlinks zu Python 2.7 und 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

Sie werden auch wollen sudo apt-get install python3-pip; Vor der Installation haben Sie:

$ 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

Nach der Installation 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...

Die resultierenden Versionen:

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

Und noch eine letzte Sache, bevor Sie mit der Installation aller Ihrer bevorzugten Python-PyPI-Module beginnen können: Sie müssen wahrscheinlich pip selbst aktualisieren (sowohl pip2 als auch pip3, unabhängig davon, ob pipes über die pythonausführbaren Dateien oder über die aufgerufen wird pipausführbare Dateien, die eigentlichen Upgrades sind gespeichert in /usr/lib):

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

Sie können jetzt entweder die eigenständige pipoder die in python(via python -m pip {command}) enthaltene Version ausführen .


[1] Historisches Fazit: Ältere Ubuntu hatten nur Python 2.6, also alle verschiedenen Methoden, um Python 2.7+ zu installieren. Später, nachdem Python 2.7 zu den öffentlichen Repositories hinzugefügt wurde, hatten wir immer noch die gleiche Herausforderung, das neueste Python 2.7 mit den neuesten Fixes zu installieren, was (zu) häufig notwendig war. Die heutige Situation ist viel besser / einfacher: Die aktuellen Python 2.7 und 3.5 (im Grunde die einzigen zwei Python-Plattformversionen, die die Leute interessieren), die jetzt in den öffentlichen Repos sind, sind sehr stabil, sodass wir uns nur um die Installation der neuesten kümmern müssen Python- Module , nicht die neuesten Python . Das "neueste Versionsproblem" von Python ist nun teilweise aus den Betriebssystem-Repos & aptin PyPI & übergegangen pip.)

michael
quelle
2
Befolgen Sie diese Anweisungen unter Ubuntu 16.04.1 LTS, um Python 2.7 erfolgreich einzurichten und wie folgt zu pipgen: sudo apt-get install python2.7; sudo apt-get install python-pip; sudo -H python2 -m pip install --upgrade pip; # Überprüfen der Version: $ pip --version -> pip 9.0.1 von /usr/local/lib/python2.7/dist-packages (Python 2.7); $ python - version -> Python 2.7.12
Robert Lujo
Verzeihen Sie meine Unwissenheit, aber kann ich wissen, was "gehasht" bedeutet, wenn Python-Versionen angezeigt werden?
Failed Scientist
1
@TalhaIrfan Es ist eine gute Frage (und wenn Sie eine vereinfachte Antwort zulassen): Wenn ein Befehl in bash (mit den meisten Shells) eingegeben wird, kann es sich bei cmd um einen Alias, eine Funktion oder eine ausführbare Datei handeln, die sich in der Datei befindet $PATH. Die env var PATHist eine lange Liste von Verzeichnissen mit buchstäblich Tausenden von Dateien. Um die Suche nach der ausführbaren Datei zu beschleunigen, verwendet die Shell eine zwischengespeicherte Hashtabelle für die schnelle Suche. Es könnte veraltet werden, also lässt "hashed" Sie wissen, dass es sich "an diesen Befehl erinnert", der dieser ausführbaren Datei zugeordnet ist. Unix.stackexchange.com/questions/5609/…
michael
@ Michael Vielen Dank! Es ist wirklich nützliche Antwort: Kurz und auf den Punkt!
Failed Scientist
1
@gaia Sie möchten möglicherweise eine separate Frage stellen, da möglicherweise mehr Hin- und Herbewegungen erforderlich sind, um dies herauszufinden (oder wenn sich etwas geändert hat, seit ich dies geschrieben habe). Vergewissern Sie sich zunächst, dass sowohl pip (2.7) als auch pip3(3.x) vollständig installiert / aktualisiert wurden und nicht nur die ersteren - dh sudo apt-get install python-pip python3-pipund sudo -H python2 -m pip install --upgrade pipund sudo -H python3 -m pip install --upgrade pip ... oder ob es sich wirklich um ein Berechtigungsproblem handelt (angezeigt durch "es funktioniert mit") sudo "), dann wird es etwas schwieriger, sie zu finden.
Michael
11

12.04

Wenn Sie Achus Antwort folgen , sollte der Begriff libread5-devin geändert werden libreadline-gplv2-dev. Der vollständige Befehl wäre also:

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
Dieser Typ
quelle
4

Sie können es auch über pyenv herunterladen und installieren

#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
Flüsterte
quelle
Dies ist der sauberste Weg, um eine wirklich aktuelle Version von Python auf einer älteren Version von Ubuntu zu erhalten. Über das pyenv-virtualenvPlugin wird auch Virtualenv unterstützt , sodass Anwendungen mit unterschiedlichen Modulanforderungen problemlos installiert werden können.
RichVel
2
Zwei Warnungen zu pyenv: (1) Es funktioniert nur mit einer Bash-Shell (oder vielleicht mit zsh, aber mit Sicherheit nicht mit dash, was / bin / sh unter Ubuntu ist), und (2) es benötigt eine Login-Shell (zB bash --login), was nicht ist immer leicht zu erreichen zB von Ansible. Am besten für die interaktive Verwendung geeignet, weniger für Skriptserver.
RichVel
0

Meistens ein Spiegel dieser Antwort mit einem optimierten Intro

Ich würde Pyenv empfehlen . Es automatisiert den Erstellungsprozess, abgesehen von der Installation der Header-Abhängigkeiten (siehe unten). Sie können eine neue (oder alte) Version von Python erstellen und installieren, indem Sie einfach sagen pyenv install 3.6.0: Alles läuft als Ihr Benutzer, so dass Sie sich keine Sorgen machen müssen, ob Sie das von Ubuntu selbst verwendete Python durcheinander bringen.

Im Gegensatz zu einigen apt-repo-basierten Optionen (z. B. Deadsnakes) funktioniert es im Allgemeinen am Tag der Veröffentlichung nach a, pyenv updateda Sie nicht darauf warten müssen, dass jemand anderes es packt. Alle Versionen anzeigen, mit denen Sie installieren könnenpyenv install --list

Installieren Sie pyenv

  1. Installieren Sie Tools und Header, die zum Erstellen von CPythons erforderlich sind (exotische Pythons wie PyPy oder Jython können andere Abhängigkeiten aufweisen). Git wird von pyenv verwendet und ermöglicht auch das Erstellen / Installieren von Quell-Zweigen, so dass Sie das installieren können, was gerade 3.8 ist, dh den Master-Zweig von CPython, der neu von GitHub stammt:

    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. Führen Sie das Installationsskript aus (installiert pyenv und einige sehr nützliche pyenv-Plugins des ursprünglichen Autors; weitere Informationen finden Sie hier ).

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  3. Fügen Sie Init-Zeilen zu Ihrem ~/.profileoder hinzu ~/.bashrc(dies wird am Ende des Installationsskripts erwähnt):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
  4. Starten Sie Ihre Shell neu (close & open oder exec $SHELL) oder laden Sie das Profilskript neu. (mit zB source ~/.bashrc)

Getan!

Umgebung einrichten

Um das System Python nicht zu berühren (im Allgemeinen eine schlechte Idee; Dienste auf Betriebssystemebene könnten sich auf bestimmte Bibliotheksversionen usw. stützen), erstellen Sie Ihre eigene Umgebung - es ist ganz einfach! Noch besser, nein sudo, dafür oder pipinstalliert!

  1. Installieren Sie Ihre bevorzugte Python-Version (dadurch wird die Quelle heruntergeladen und für Ihren Benutzer erstellt, keine Eingabe erforderlich)

    pyenv install 3.6.0
  2. Machen Sie es zu einem virtuellen Video, damit Sie später andere erstellen können, wenn Sie möchten

    pyenv virtualenv 3.6.0 general
  3. Machen Sie es global aktiv (für Ihren Benutzer)

    pyenv global general
  4. Mach was du willst mit dem Python / Pip, etc. Es liegt bei dir.

Wenn Sie Ihre Bibliotheken später bereinigen möchten, können Sie das virtuelle env löschen ( pyenv uninstall general) oder ein neues erstellen ( pyenv virtualenv 3.6.0 other_proj). Sie können auch Umgebungen pro Verzeichnis aktivieren: Legt pyenv local other_projeine .python-versionDatei in Ihrem aktuellen Ordner ab, und jedes Mal, wenn Sie Python- oder Python-Dienstprogramme aufrufen, die von Python oder darunter installiert wurden, werden sie von pyenv angepasst.

Fehlerbehebung

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

    1. Überprüfen Sie $PATH, ob es einen Eintrag geben sollte, der mit so etwas wie endet .pyenv/bin. Wenn es fehlt, vergewissere dich, dass du # 3 UND # 4 (starte deine Shell neu) unter Install pyenv oben gefolgt bist.
  • pyenv: no such command 'virtualenv'

    1. Wenn Sie das Installationsskript nicht verwendet haben, haben Sie wahrscheinlich nur das Root-Paket pyenv installiert. Anweisungen zum Hinzufügen des Plugins finden Sie unter pyenv-virtualenv
    2. Wenn Sie das Installationsskript verwendet haben, prüfen Sie, ob es mit angezeigt wird pyenv commands.
Nick T
quelle