[[Vorlage(Getestet, noble)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] [[Bild(nuitka_logo.png, align=left)]] [https://nuitka.net/ Nuitka] {en} 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 [http://nuitka.net/pages/overview.html What is Nuitka?] {en} 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] {{{#!vorlage Paketinstallation python3-dev build-essential }}} benötigt. Möchte ein Python-Programm in eine ausführbare Standalone-Datei kompilieren, muss außerdem noch das Paket {{{#!vorlage Paketinstallation patchelf, universe }}} installiert werden. == manuelle Installation == [[Vorlage(PipInstallation, nuitka)]] Auf der [https://nuitka.net/pages/download.html Downloadseite von Nuitka] {en} werden noch weitere Installationsmöglichkeiten aufgeführt. = Nutzung = Nuitka wird wie folgt aufgerufen: {{{#!vorlage Befehl 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 [http://nuitka.net/doc/user-manual.html Dokumentation] {en}. = Alternativen = Mit der Kombination [http://cython.org/ Cython] {en} 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 [https://numba.pydata.org/ numba] {en} deutlich schneller als eine mit Nuitka kompilierte Datei. = Links = * [http://nuitka.net/ Homepage] {en} von Nuitka * [wikipedia_en:Nuitka:Artikel] im englischen Wikipedia #tag: Programmierung, Python