Nuitka
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
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 🇬🇧 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 manuelle 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.
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
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 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.
Möchte man eine ausführbare Datei erzeugen, dann muss man die Option --standalone
genutzt werden. Die erzeugte Datei hat den Namen der Quelldatei, aber mit der Dateiendung .exe; außerdem werden diverse Dateien in einem Verzeichnis mit dem Namen der Quelldatei und der Endung .dist abgelegt. Die exe-Datei ist unter Ubuntu ausführbar, aber - entgegen des Namens - nicht unter Windows. Mit Nuitka kompilierte Dateien können nur auf der gleichen Plattform (also z.B. Linux) weitergegeben werden. Dazu muss die exe-Datei und das dist-Verzeichnis weitergegeben werden; die exe-Datei alleine ist nicht nutzbar.
Weitere Optionen und Hinweise zur Nutzung von Nuitka findet man in der Dokumentation 🇬🇧.
Alternativen¶
Mit der Kombination Cython 🇬🇧 und GCC lassen 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.
Links¶