Python Compiller

Du hast eine Idee für ein Projekt?
Schwarze_Mamba
User
Beiträge: 16
Registriert: Montag 5. November 2012, 20:31

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
lunar

@Schwarze_Mamba Glaubst Du wirklich, Du wärst der erste mit dieser Idee?
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Genügt py2exe nicht? :mrgreen:

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
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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

py2exe packt den Pythoninterpreter, das Script und die benötigten Module lediglich in eine Datei, da wird nichts kompiliert.
Das Leben ist wie ein Tennisball.
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Huch, ich vergaß :mrgreen:
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
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Oder die PyPy toolchain
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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?
Cython ist schon mal ein interessanter Ansatz dafür.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Schwarze_Mamba hat geschrieben:Ist sowas möglich?
Nicht so ohne weiteres.
Schwarze_Mamba hat geschrieben:Wäre interessant wen jemand sowas programmiert.
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

pixewakb hat geschrieben:Arbeitet wie py2exe...
Und geht damit komplett am Thema vorbei.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

cofi hat geschrieben:
pixewakb hat geschrieben:Arbeitet wie py2exe...
Und geht damit komplett am Thema vorbei.
Da das Thema Python-Compiller ist, weiß ich gar nicht, ob da überhaupt schon ein passender Beitrag dabei war... :twisted:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Hyperion hat geschrieben:Da das Thema Python-Compiller ist, weiß ich gar nicht, ob da überhaupt schon ein passender Beitrag dabei war... :twisted:
Man muss sich natürlich darüber im Klaren sein, dass bei CPython der Bytecode durch einen Interpretter ausgeführt wird.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Die Projekte gibt's doch schon: nuikta und shedskin
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

darktrym hat geschrieben:Die Projekte gibt's doch schon: nuikta und shedskin
Um mal von der Shedskin Seite zu zitieren:
[...]pure, but implicitly statically typed Python[...]
[...]programs cannot freely use the Python standard library[...]
[...]not all Python features, such as nested functions and variable numbers of arguments, are supported[...]
Mit anderen Worten Shedskin kompiliert gar kein Python sondern irgendein Subset, überhaupt scheint es eher sowas wie RPython anbieten zu wollen.

Nuitka ist nach eigener Aussage:
Correct in the sense that it's compatible to CPython as far as possible.
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.

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.
lunar

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.
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
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

lunar hat geschrieben:
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.
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).
Nachdem Java und C# dann "kompiliert" sind werden sie von eine VM ausgeführt wie bei CPython oder PyPy auch.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sirius3 hat geschrieben: Bei .NET steckt in der EXE alles drin was der Interpreter zum Interpretieren braucht.
Schön versteckt.
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.

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
Benutzeravatar
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...
Benutzeravatar
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.
Antworten