[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] [[Bild(nuitka_logo.png, align=left)]] [http://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 manuelle installiert werden. == Voraussetzung == Es werden die Pakete[1] {{{#!vorlage Paketinstallation python3-dev build-essential }}} benötigt. == manuelle Installation == [[Vorlage(PipInstallation, nuitka)]] Auf der [http://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 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 [http://nuitka.net/doc/user-manual.html Dokumentation] {en}. = Alternativen = Mit der Kombination [http://cython.org/ Cython] {en} und [:GCC:] lassen 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