Python ausführbar machen - Python Programm erstellen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo.

Gibt es eventuell einen C Code in den man den Inhalt eines Python Scripts einfach einfügen kann und dieser wird dann ausgeführt?

Nein.

Ein paar Grundlagen:

C, C++ und Swift sind Compilersprachen. Ein Compiler erzeugt aus dem Quellcode Binärcode, den die Maschine ausführen kann. Solcher Binärcode läuft meistens nur auf einer bestimmten Hardwarearchitektur (z.B. x86_64) und einem bestimmten Betriebssystem z.B. Linux ab Version 2.6.

Python hingegen ist eine interpretierbare Skriptsprache. Der Quellcode wird von einem Interpreter zur Laufzeit in Binärcode übersetzt. Das hat zwei Vorteile: (1.) Da Python zur Laufzeit kompilliert wird, lässt sich ein Python-Skript besonders einfach ändern. (2.) Python ist plattformunabhängig, da der Interpreter eine weitere Abstraktionsebene zwischen Anwendungsprogramm und Betriebssystem darstellt. Ein Pythonskript läuft auf jeder Hardwarearchitektur und jedem Betriebssystem, auf dem ein Python-Interpreter installiert ist.

Jetzt habe ich gelesen das es zwar unter Linux möglich ist eine EXE per Shell zu erzeugen, aber der normale Weg zum Beispiel über C als "Umgebung" führt.

Erstmal: Unter GNU/Linux gibt es keine *.exe-Dateien. Es ist weitgehend Konvention ausführbaren Binärdateien unter Unix-Systemen keine Dateiendung zu geben.

Vielleicht meinst du die GCC?

Die GCC ist Teil des GNU-Projekts und enthält Compiler für einige Programmierspachen. Am bekanntesten ist der gcc für C und C++. Wenn ich ein C-Programm schreibe und möchte, dass daraus ausführabrer Binärcode wird, dann öffne ich ein Terminal und lass den gcc meinen Quellcode in Binärcode verwandeln. (Prinzipiell müsste ich das nicht im Terminal machen, sondern könnte auch eine IDE, wie Eclipse verwenden, die dann den gcc aufruft...)

Die GCC kann aber kein Python!

Cython

Eine Möglichkeit aus Python-Code ausführbaren Binärcode zu erzeugen ist Cython. Cython ist eine alternative (jedoch weitgehend Python-3-konforme) Python-Implementierung. Cython macht aus Python-Code C-Code.

In bestimmten Fällen ist das sehr nützlich - etwa, wenn ich an einem C-Programm arbeite bei dem sich bestimmte Funktionen sich in Python viel besser realisieren ließen (z.B. Regex-Kram, Statistik-Kram).

Abhängigkeiten

Allerdings sollte man meiner Meinung nach nicht auf Cython zurückgreifen, nur damit ein Python-Skript auf einem System läuft, auf dem noch kein Python-Interpreter installiert ist. Das würde zwar funktionieren, wäre aber eine "dreckige" Lösung.

Es gibt gute Gründe, warum man Programme auf seinem System installiert. Zum Installieren eines Programmes gehört auch dazu, dass man andere Programme und Bibliotheken ("Abhängigkeiten") mitinstalliert. Wenn du willst, dass die von dir entwickelte Software auf einem GNU/Linux-System installiert werden kann, dann beschäftige dich mit Paket-Building! Das ist die ordentliche Lösung.

Viel Spaß und Erfolg beim Coden-Lernen!

Woher ich das weiß:Studium / Ausbildung

installiere mal die Pakete python-setuptools und pyinstaller. Damit kann man Python-Programme in ausführbare Dateien kompilieren. Der Befehl zum Kompilieren in der Eingabeaufforderung oder Powershell geht so:

  • pyinstaller programmname.py

Das erzeugt in dem Ordner wo das Python-Programm abgespeichert wurde 2 weitere Ordner: Einmal build und dist. Der Ordner build kann nach dem Kompilieren gelöscht werden. Im Ordner dist befindet sich das ausführbahre Programm und die benötigten Python-Laufzeitbibliotheken.

Danach hat man die Möglichkeit das ganze mit Inno Setup in eine Installationsroutine zu verpacken: http://www.jrsoftware.org/download.php/is.exe In dem Inno Setup Assistenten muss man nur den Ordnerinhalt von dist hinzufügen. Inno Setup erstellt dann daraus eine setup.exe. Ideal wenn man das Programm weitergeben möchte. Die erstellte setup.exe erzeugt einen Startmenüeintrag bei Windows und in der Systemsteuerung bei Programme/Software einen Deinstallationseintrag.

Windows-Nutzer müssen folgendes installieren.

Die beiden Sachen zur Windows PATH Umgebungsvariable hinzufügen. Python muss auch hinzugefügt werden.

Und so kompiliert man damit: Zuerst erstellt man sich einen Ordner. Als Name kann z.B. Python-Projekte genommen werden. Dort speichert man das geschriebene Python-Programm ab. Dann geht man in diesen Ordner, klickt mit der rechten Maustaste rein und wählt Powershell oder Eingabeaufforderung. Dann folgenden Befehl eingeben und mit Enter abschließen:

  • nuitka --recurse-all --standalone programmname.py

Das erzeugt in dem Ordner Python-Projekte 2 weitere Ordner. Einmal programmname.build und programmname.dist. Der Ordner programmname.build kann nach dem Kompilieren gelöscht werden. Im Ordner programmname.dist befindet sich das kompilierte Python-Programm mit dem Namen programmname.exe und allen benötigten Laufzeitbibliotheken. Zum Schluss kann man noch das ganze mit Inno Setup http://www.jrsoftware.org/download.php/is.exe in ein Installationspaket (setup.exe) zu verpacken, falls man es weitergeben möchte. Dann kann der Nutzer es einfach installieren und es wird in Windows ein Startmenüeintrag erstellt.

----------------------------------------------------------------------------------------------------------------------------------

Als Linux-Nutzer installiert man sich pyinstaller. Dazu im Terminal folgendes eingeben:

  • sudo pip install pyinstaller

Und so kompiliert man: Man geht in den Ordner wo das Python-Programm abgespeichert ist und ruft von dort das Terminal auf. Dann folgendes eingeben:

  • pyinstaller programmname.py

Das erzeugt in dem Ordner 2 weitere Ordner. Der Ordner build kann nach dem Kompilieren gelöscht werden. Im Ordner dist befindet sich ein weiterer Ordner und da drin befindet sich das kompilierte Python-Programm mit dem Namen programmname und die benötigten Laufzeitbibliotheken.

Falls man eine debian-basierende Linux-Distribution hat, kann man mit diesem Tool daraus ein deb-Installationspaket erstellen: https://antumdeluge.github.io/debreate-web/