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