Python 3.10 unter Ubuntu installieren

Die über das Paketverwaltungssystem apt zur Verfügung stehenden Python-Pakete sind in der Regel älteren Datums. Soll eine aktuelle Python-Version zum Zuge kommen, ist etwas Handarbeit erforderlich. Dieses Tutorial erklärt die notwendigen Schritt:

Aktualisiert zunächst den Paketindex:

$ sudo apt update

Anschließend können die erforderlichen Abhängigkeiten installiert werden:

$ sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

Selbstverständlich wird noch eine aktuelle Python-Version benötigt, die Ihr von der offiziellen Python-Seite herunterladen könnt. In diesem Beispiel wird die tgz-Datei verwendet (Gzipped source tarball), die sich nach dem Download im Downloadverzeichnis befindet. Wechselt mit

$ cd ~/Downloads

in dieses Verzeichnis und entpackt die Datei (ggf. muss der Dateiname angepasst werden):

$ tar -xf Python-3.10.1.tgz

Nun wechselt Ihr in das Verzeichnis und führt configure aus:

$ cd Python-3.10.1
$ ./configure --enable-optimizations

Der Build-Vorgang ist nun mit

$ make -j 4

zu starten, wobei über die Option -j die Anzahl der zu verwendenden Kerne angegeben werden kann. Wenn Ihr Euch nicht sicher seid, wie viele Kerner Euer System hat, hilft

$ nproc

weiter.

Der Build-Vorgang kann einige Zeit in Anspruch nehmen. Aber schließlich kann Python 3.10 mit

$ sudo make altinstall

installiert werden. Dabei wird mit dem hier verwendeteten altinstall (anstelle von install) sichergestellt, dass die Standard-Python-Binaries nicht überschrieben werden.

Eventuell muss noch PYTHONPATH angepasst bzw. hinzugefügt werden. Öffnet also die Datei ~/.bashrc und stellt sicher, dass folgende Anweisung vorhanden ist:

export PYTHONPATH=${PYTHONPATH}:${HOME}/.local/lib/python3.10/site-packages/

Falls Ihr die Z-Shell nutzt, müsst Ihre diese Anpassung in der Datei ~/.zshrc vornehmen.

Abschließend kann im Terminal geprüft werden, ob der richtige Python-Interpreter verwendet wird:

$ python3
Python 3.10.1 (main, Dec 18 2021, 18:00:26) [GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Troubleshooting

Eine derartige Python-Installation ist mit einigen Fallstricken verbunden. Nachfolgende Ausführungen mögen Euch bei auftretenden Problemen weiterhelfen.

Sollte beim Aufruf von python3 weiterhin der alte Interpreter starten, mag dies damit zusammenhängen, dass im Verzeichnis

/usr/bin

ein symbolischer Link auf die alte Python-Version gesetzt ist. Wechselt dann in das Verzeichnis und überprüft dies:

$ cd /usr/bin
$ ls -l | grep python3

Im folgenden Beispiel verweist python3 auf eine Installation von Python 3.8:

python3 -> /usr/local/bin/python3.8

Durch das Entfernen dieses Verweises mit

$ sudo rm python3

und der Einrichtung eines neuen symbolischen Links auf Python 3.10 sollte dieses Problem behoben sein:

$ ln -s /usr/local/bin/python3.10 python3

Falls die Installation eines Moduls mit pip3 aufgrund folgender Fehlermeldung misslingt

subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

müsst Ihr die erste Zeile der Datei

/usr/bin/lsb_release

ändern. Tragt dort Eure neue Python-Version ein, z.B.

#! /usr/bin/python3.10