ubuntuusers.de

Nuitka

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

nuitka_logo.png Nuitka 🇬🇧 ist ein Compiler für Python, der vollständig kompatibel zur Referenzimplementierung CPython ist. Nuitka kann sowohl einzelne Python-Module kompilieren als auch vollständige, direkt ausführbare Binärdateien erzeugen.

Technisch gesehen übersetzt Nuitka das Python-Skript in C-Code und linkt diesen gegen libpython. Der C-Code wird also immer noch von Python ausgeführt. Wird eine ausführbare Datei erzeugt, wird neben der Datei an sich noch ein Unterverzeichnis mit den zugehörigen (ebenfalls kompilierten) Python-Modulen erzeugt. Nuitka kann aktuell keine monolithischen Dateien, welche den kompletten benötigten Code enthalten, erzeugen. Weitere Details, auch zum Stand der Implementierung und Entwicklung, sind auf der Seite What is Nuitka? 🇬🇧 zu finden.

Auch wenn Nuitka C-Code erzeugt, laufen die Programme, welche kompiliert werden, aufgrund des oben erklärten Weges, den Nuitka geht, nicht unbedingt schneller als der Bytecode-Interpreter der Referenzimplementierung CPython.

Installation

Nuitka ist nicht in den Paketquellen enthalten und muss von daher manuell installiert werden.

Voraussetzung

Es werden die Pakete[1]

  • python3-dev

  • build-essential

Befehl zum Installieren der Pakete:

sudo apt-get install python3-dev build-essential 

Oder mit apturl installieren, Link: apt://python3-dev,build-essential

benötigt.

Möchte ein Python-Programm in eine ausführbare Standalone-Datei kompilieren, muss außerdem noch das Paket

  • patchelf (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install patchelf 

Oder mit apturl installieren, Link: apt://patchelf

installiert werden.

manuelle Installation

Der Python-Paketmanager pip stellt häufig aktuellere Versionen von Programmen als in den Paketquellen bereit. Folgendermaßen lässt sich das Programm darüber installieren:

pip3 install nuitka       # Programm wird nur für den aktuellen Nutzer installiert  

Ab Ubuntu 23.04 muss in eine virtuelle Umgebung für Python installiert werden:

python3 -m venv venv-name && source venv-name/bin/activate # venv-name durch den gewünschten Namen ersetzen
pip3 install nuitka       # Programm ist nur bei aktiver virtueller Umgebung nutzbar  

Hinweis!

Fremdsoftware kann das System gefährden.

Auf der Downloadseite von Nuitka 🇬🇧 werden noch weitere Installationsmöglichkeiten aufgeführt.

Nutzung

Nuitka wird wie folgt aufgerufen:

nuitka [OPTIONEN] QUELLDATEI.py 

Gibt man keinerlei Optionen an, wird einfach nur das Python-Skript QUELLDDATEI.py kompiliert. Mögliche extern Module, die QUELLDATEI.py importiert, werden dabei nicht mit übersetzt. Um diese mit zu kompilieren, was in der Regel sinnvoll ist, muss die Option --recurse-all genutzt werden. Als Ergebnis erhält man eine Datei QUELLDATEI.bin, welche das kompilierte Pythonprogramm enthält. Außerdem wird ein Verzeichnis QUELLDATEI.build angelegt, in dem sich Dateien befinden, die bei der Ausführung von QUELLDATEI.bin benötigt werden.

Möchte man eine ausführbare Datei erzeugen, die keine lokale Python-Installation mehr benötigt, dann muss die Option --standalone genutzt werden. Es wird ein Verzeichnis QUELLDATEI.dist erzeugt, welches diverse Dateien inklusive einer Datei QUELLDATEI.bin enthält. Dieses Verzeichnis kann auf andere Rechner mit gleicher Plattform (also z.B. Linux) weitergegeben und dort ausgeführt werden.

Nutzt man zusätzlich zur Option --standalone die Option --onefile. Dabei erzeugt man eine einzelne Datei QUELLDATEI.bin, welche auf anderen Rechner mit gleicher Plattform (also z.B. Linux) ausgeführt werden kann. Da in diese Datei alles inkl. dem Python-Interpreter, den benötigten Modulen etc. alles enthalten ist, kann die Datei sehr groß sein. Selbst bei relative simplen Programmen mit wenig Code und ohne Nutzung externer Module, ist die Datei bereits ca. 7 GB groß.

Weitere Optionen und Hinweise zur Nutzung von Nuitka findet man in der Dokumentation 🇬🇧.

Alternativen

Mit der Kombination Cython 🇬🇧 und GCC lassen sich monolithische, ausführbare Binärdateien erzeugen. Wenn es um die Beschleunigung der Ausführung eines Python-Skripts geht, sind PyPy oder numba 🇬🇧 deutlich schneller als eine mit Nuitka kompilierte Datei.

Diese Revision wurde am 2. November 2024 22:21 von chris34 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Python, Programmierung