Seite 1 von 2
Python Compiller
Verfasst: Dienstag 6. November 2012, 16:15
von Schwarze_Mamba
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
Re: Python Compiller
Verfasst: Dienstag 6. November 2012, 16:35
von lunar
@Schwarze_Mamba Glaubst Du wirklich, Du wärst der erste mit dieser Idee?
Re: Python Compiller
Verfasst: Dienstag 6. November 2012, 18:03
von StefanLawl
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
Re: Python Compiller
Verfasst: Dienstag 6. November 2012, 18:19
von EyDu
py2exe packt den Pythoninterpreter, das Script und die benötigten Module lediglich in eine Datei, da wird nichts kompiliert.
Re: Python Compiller
Verfasst: Dienstag 6. November 2012, 18:21
von StefanLawl
Huch, ich vergaß

Re: Python Compiller
Verfasst: Dienstag 6. November 2012, 18:33
von jbs
Oder die PyPy toolchain
Re: Python Compiller
Verfasst: Dienstag 6. November 2012, 20:16
von /me
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.
Re: Python Compiller
Verfasst: Donnerstag 8. November 2012, 21:32
von Leonidas
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.
Re: Python Compiller
Verfasst: Dienstag 25. Dezember 2012, 15:14
von pixewakb
Für Python 3.x gibt es
cx-freeze. Arbeitet wie py2exe...
Re: Python Compiller
Verfasst: Dienstag 25. Dezember 2012, 18:30
von cofi
pixewakb hat geschrieben:Arbeitet wie py2exe...
Und geht damit komplett am Thema vorbei.
Re: Python Compiller
Verfasst: Freitag 28. Dezember 2012, 00:47
von Hyperion
cofi hat geschrieben:pixewakb hat geschrieben:Arbeitet wie py2exe...
Und geht damit komplett am Thema vorbei.
Da das Thema Python-Compil
ler ist, weiß ich gar nicht, ob da überhaupt schon ein passender Beitrag dabei war...

Re: Python Compiller
Verfasst: Freitag 28. Dezember 2012, 09:32
von /me
Hyperion hat geschrieben:Da das Thema Python-Compil
ler ist, weiß ich gar nicht, ob da überhaupt schon ein passender Beitrag dabei war...

Man muss sich natürlich darüber im Klaren sein, dass bei CPython der Bytecode durch einen Interpret
ter ausgeführt wird.
Re: Python Compiller
Verfasst: Sonntag 30. Dezember 2012, 11:34
von darktrym
Die Projekte gibt's doch schon:
nuikta und
shedskin
Re: Python Compiller
Verfasst: Sonntag 30. Dezember 2012, 16:22
von DasIch
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.
Re: Python Compiller
Verfasst: Sonntag 30. Dezember 2012, 16:53
von 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).
Re: Python Compiller
Verfasst: Sonntag 30. Dezember 2012, 16:57
von DasIch
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.
Re: Python Compiller
Verfasst: Sonntag 30. Dezember 2012, 18:33
von Sirius3
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.
Re: Python Compiller
Verfasst: Sonntag 30. Dezember 2012, 18:58
von Hyperion
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

Re: Python Compiller
Verfasst: Sonntag 6. Januar 2013, 18:52
von microkernel
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...
Re: Python Compiller
Verfasst: Sonntag 6. Januar 2013, 19:12
von cofi
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.