Historischer Beitrag vom 4. Januar 2023, für den Neubau übersetzt und korrigiert. Die Versionen und Zeiten sind Beispiele von damals; prüfe die aktuellen Python-Versionen und die Voraussetzungen deiner Distribution.
Raspbian bringt nicht immer die Python-Version mit, die man für ein Projekt möchte. Hier ein kompaktes Beispiel, wie ich Python 3.11.1 auf einem Raspberry Pi selbst gebaut habe. Python 3.11 erschien übrigens bereits am 24. Oktober 2022, nicht im Dezember.
Pakete aktualisieren
Erst aktualisieren wir die Paketlisten und installierten Pakete:
sudo apt update
sudo apt upgradeAbhängigkeiten
Für das Kompilieren brauchen wir Entwicklungswerkzeuge und Bibliotheken:
sudo apt install -y libffi-dev libbz2-dev liblzma-dev \
libsqlite3-dev libncurses5-dev libgdbm-dev zlib1g-dev \
libreadline-dev libssl-dev tk-dev build-essential \
libncursesw5-dev libc6-dev openssl git wgetQuellcode holen
Das Beispiel verwendet Python 3.11.1. Prüfe die Integrität und Signatur des Downloads anhand der Angaben von python.org.
wget https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.gz
tar zxf Python-3.11.1.tar.gz
cd Python-3.11.1Konfigurieren und bauen
Wir erstellen das Makefile. Die Optimierungen können den Bau deutlich verlängern:
./configure --enable-optimizationsmake -j 4 -l 4Auf meinem Pi dauerte das damals etwa eine halbe bis eine Stunde. Je nach Modell und Konfiguration kann es anders aussehen. Wenn der Rechner instabil wird, reduziere die Parallelität und prüfe Stromversorgung, Temperatur und freien Speicher. Achte außerdem auf Meldungen über nicht gebaute Module; meist fehlen dann Bibliotheken.
Den fertigen Interpreter testen wir direkt im Quellverzeichnis:
./python -VInstallieren
Damit wir das Python der Distribution nicht überschreiben, verwenden wir altinstall statt install. Je nach Installationsziel sind Administratorrechte nötig. Python 3.11 wird dadurch nicht automatisch zum Standard-python3; wir rufen es ausdrücklich auf:
sudo make altinstall
python3.11 -VDas Vorgehen empfiehlt auch die Python-Dokumentation. Alte Entwicklungsbibliotheken solltest du nicht blind entfernen: Andere Pakete können sie noch brauchen.