Ich hatte mal die Idee, ob jemand vieleicht mal
den Python Interpreter umschreibt, so dass der Python Code
direkt in eine .exe Date umgewandelt wird. Ist sowas möglich?
Wäre interessant wen jemand sowas programmiert.
Schwarze_Mamba
Python Compiller
- StefanLawl
- User
- Beiträge: 92
- Registriert: Donnerstag 7. Juni 2012, 20:23
Genügt py2exe nicht?
Irgendwie muss es ja gehen, sonst gäbe es py2exe nicht.
Man muss es nur noch so erweitern, dass es direkt beim Ausführen des .py Skripts compiled wird.
Stefan

Irgendwie muss es ja gehen, sonst gäbe es py2exe nicht.

Stefan
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
-V
- StefanLawl
- User
- Beiträge: 92
- Registriert: Donnerstag 7. Juni 2012, 20:23
Huch, ich vergaß 

Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
-V
Cython ist schon mal ein interessanter Ansatz dafür.Schwarze_Mamba hat geschrieben:Ich hatte mal die Idee, ob jemand vieleicht mal
den Python Interpreter umschreibt, so dass der Python Code
direkt in eine .exe Date umgewandelt wird. Ist sowas möglich?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nicht so ohne weiteres.Schwarze_Mamba hat geschrieben:Ist sowas möglich?
Haha, ich muss sagen, das erinnert mich dran wie ich mit Python angefangen habe. Damals dachte ich auch "das muss doch irgendwie gehen" und jetzt wo ich mehrere Compilerbau-Praktikas hinter mir habe muss ich zustimmen, es geht *irgendwie*. Aber irgendwie ist nicht gut genug, wenn man das Programm in einem nativen Binary haben will gibt es py2exe & Co. und wenn der Code schnell laufen soll dann *seufz* muss man sich woanders umschauen oder richtig tief in die JIT-Trickkiste greifen.Schwarze_Mamba hat geschrieben:Wäre interessant wen jemand sowas programmiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Für Python 3.x gibt es cx-freeze. Arbeitet wie py2exe...
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Und geht damit komplett am Thema vorbei.pixewakb hat geschrieben:Arbeitet wie py2exe...
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Da das Thema Python-Compiller ist, weiß ich gar nicht, ob da überhaupt schon ein passender Beitrag dabei war...cofi hat geschrieben:Und geht damit komplett am Thema vorbei.pixewakb hat geschrieben:Arbeitet wie py2exe...

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Man muss sich natürlich darüber im Klaren sein, dass bei CPython der Bytecode durch einen Interpretter ausgeführt wird.Hyperion hat geschrieben:Da das Thema Python-Compiller ist, weiß ich gar nicht, ob da überhaupt schon ein passender Beitrag dabei war...
Um mal von der Shedskin Seite zu zitieren:
[...]pure, but implicitly statically typed Python[...]
[...]programs cannot freely use the Python standard library[...]
Mit anderen Worten Shedskin kompiliert gar kein Python sondern irgendein Subset, überhaupt scheint es eher sowas wie RPython anbieten zu wollen.[...]not all Python features, such as nested functions and variable numbers of arguments, are supported[...]
Nuitka ist nach eigener Aussage:
Konkret heisst dass, Nuitka will zwar Kompatibiltät wird sie aber nicht wirklich erreichen, ist momentan auch nicht kompatibel und schneller als CPython, was ja schon ein recht langsamer Interpreter ist, wird es wohl auch eher nicht, könnte sogar langsamer werden.Correct in the sense that it's compatible to CPython as far as possible.
Das kann man sich alles aber auch denken wenn man sich Python anschaut. Ein Compiler wird zwangsläufig eine recht aufwendige Runtime generieren müssen und einige Sprach Features wie AST/Bytecode Manipulation, eval/exec sind einfach mit einem Compiler nicht realisierbar.
Warum? Diese Features gibt es in diversen „kompilierten“ Sprache, u.a. Java und C# (generell .NET), bei letzterem sogar als integraler Bestandteil der Sprache (siehe Expression Trees).DasIch hat geschrieben:Das kann man sich alles aber auch denken wenn man sich Python anschaut. Ein Compiler wird zwangsläufig eine recht aufwendige Runtime generieren müssen und einige Sprach Features wie AST/Bytecode Manipulation, eval/exec sind einfach mit einem Compiler nicht realisierbar.
Nachdem Java und C# dann "kompiliert" sind werden sie von eine VM ausgeführt wie bei CPython oder PyPy auch.lunar hat geschrieben:Warum? Diese Features gibt es in diversen „kompilierten“ Sprache, u.a. Java und C# (generell .NET), bei letzterem sogar als integraler Bestandteil der Sprache (siehe Expression Trees).DasIch hat geschrieben:Das kann man sich alles aber auch denken wenn man sich Python anschaut. Ein Compiler wird zwangsläufig eine recht aufwendige Runtime generieren müssen und einige Sprach Features wie AST/Bytecode Manipulation, eval/exec sind einfach mit einem Compiler nicht realisierbar.
also auf den Punkt gebracht:
Was den Dummy-Windows-User stört, ist, dass Python nicht so schön tief im Betriebssystem
verankert ist, wie .NET.
Bei .NET steckt in der EXE alles drin was der Interpreter zum Interpretieren braucht.
Schön versteckt. Dass in der Datei kein Maschinencode drinsteckt, merkt man von
außen gar nicht.
Und wie man in java in einer einzigen .jar-Datei eine ganze Application packen und ausführen kann,
geht das mit python und einer entsprechenden .zip-Datei auch.
Notfalls baut man für jede Pythonversion eine eigene zip mit nur den pyc-Dateien, dann hat man
seine »kompilierte« Version mit all ihren Nachteilen.
Was den Dummy-Windows-User stört, ist, dass Python nicht so schön tief im Betriebssystem
verankert ist, wie .NET.
Bei .NET steckt in der EXE alles drin was der Interpreter zum Interpretieren braucht.
Schön versteckt. Dass in der Datei kein Maschinencode drinsteckt, merkt man von
außen gar nicht.
Und wie man in java in einer einzigen .jar-Datei eine ganze Application packen und ausführen kann,
geht das mit python und einer entsprechenden .zip-Datei auch.
Notfalls baut man für jede Pythonversion eine eigene zip mit nur den pyc-Dateien, dann hat man
seine »kompilierte« Version mit all ihren Nachteilen.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, ohne installierte Runtime läuft eine exe, in der Programme auf .NET-Basis stecken, auch nicht. Ok, in den Versionen nach XP ist .NET-Framework vermutlich per default installiert und daher in der Praxis kein Hemmschuh mehr.Sirius3 hat geschrieben: Bei .NET steckt in der EXE alles drin was der Interpreter zum Interpretieren braucht.
Schön versteckt.
Prinzipiell wäre das aber auch mit Python kein Problem. Man könnte eine Art Standard-Template mit WiX bauen, welches auf das Vorhandensein von Python prüft und darüber hinaus ggf. auch PATH anpasst. Dann hätte man einen EXE-Installer, der zur Not alle Voraussetzungen nachinstalliert. Will man sein Programm veröffentlichen, so muss man nur ein MSI bauen, welches die zu installierenden Dateien enthält und den Installer neu erstellen. Gehen täte das auch - nur macht sich wohl eher keiner den Aufwand

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- microkernel
- User
- Beiträge: 271
- Registriert: Mittwoch 10. Juni 2009, 17:27
- Wohnort: Frankfurt
- Kontaktdaten:
Aber ist der Python Interpreter nicht in C geschrieben? Warum ist es dann nicht möglich den Python-Code in C-Code zu embedden, die python lib zu inkludieren und dann das gesamte programm mit einem c-compiler zu kompilieren? Sorry, wenn ich jetzt vielleicht doof frage, oder so...
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
In deiner Beschreibung fehlt das Python-Programm und genau da liegt das Problem. Python selbst einzubinden ist kein Problem, Dokumentation dazu gibt es direkt in der Python-Dokumentation und es wird oft gemacht.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte