Seite 1 von 1

Python Neuling hat Fragen zum Übersetzen

Verfasst: Mittwoch 20. August 2008, 15:48
von CrazyPlaya
Hallo an alle,

ich bin absoluter neuling in der Python Programmierung. Ich fange direkt mal ganz brutal an. Ich arbeite unter Windows:D. Nun habe ich mir das Projekt shtooms runtergeladen und möchte dieses im Python Idle kompilieren um daraus ein exe zu erhalten. Wie muss ich vorgehen?

Gruß

CrazyPlaya

Verfasst: Mittwoch 20. August 2008, 15:54
von Earthnuker
hi, wilkommen im forum :D
zu deinem problem:
du brauchst erstmal einen compiler(wer hätte das gedacht)
allerdings hab ich keine ahnung wie man mit nem python compiler compiliert, da ich auch noch ein neuling bin

Re: Python Neuling hat Fragen zum Übersetzen

Verfasst: Mittwoch 20. August 2008, 15:56
von lunar
CrazyPlaya hat geschrieben:ich bin absoluter neuling in der Python Programmierung. Ich fange direkt mal ganz brutal an. Ich arbeite unter Windows:D. Nun habe ich mir das Projekt shtooms runtergeladen und möchte dieses im Python Idle kompilieren um daraus ein exe zu erhalten.
Die Dokumentation zu py2exe oder pyinstaller lesen, verstehen und anwenden.

Verfasst: Mittwoch 20. August 2008, 15:56
von Leonidas
Hallo CrazyPlaya, willkommen im Forum.

Zum Problem:
[wiki]FAQ[/wiki] lesen, beide.

Verfasst: Mittwoch 20. August 2008, 15:58
von CrazyPlaya
Danke.

Was für einen Compiler gibt es denn?
Habe auch gerade noch mal genauer geschaut Python ist ja eigentlich ähnlich wie Java also erst Interpretieren und dann Compilieren. Ist jetzt nur die Frage wie man das macht:D. Und ist im Python Packet der Compiler nicht direkt mit dabei.

Verfasst: Mittwoch 20. August 2008, 15:59
von CrazyPlaya
Ok Leonidas, danke werde direkt mal lesen:D

Verfasst: Mittwoch 20. August 2008, 16:00
von Leonidas
Doch, CPython enthält einen Compiler, der genau wie Java aus dem Code Bytecode erstellt (das sind die ``pyc``- und ``pyo``-Dateien).

Verfasst: Donnerstag 28. August 2008, 12:46
von nuss
bei python ist ein compiler dabei,
der kann allerdings nicht in .exe dateien
kompilieren sonder nur in pyc oder pyo
benutzen kann man den ueber den interpreter

Code: Alles auswählen

import compiler
compiler.compile(args*)
importierte dateien, werden uebrigens
beim aufrufen des programms automatisch in
pyc kompilliert

Verfasst: Donnerstag 28. August 2008, 13:02
von Leonidas
nuss hat geschrieben:importierte dateien, werden uebrigens
beim aufrufen des programms automatisch in
pyc kompilliert
Es werden alle Dateien kompiliert, denn die Python VM kann nur Bytecode ausführen. Es wirdn aber nur der Bytecode von importierten Modulen auf die Festplatte geschrieben.

Verfasst: Samstag 30. August 2008, 09:41
von sma
CrazyPlaya hat geschrieben:ähnlich wie Java also erst Interpretieren und dann Compilieren.
Das ist nicht korrekt. Java-Quelltext muss explizit mit einem Compiler (meist javac genannt) in Bytecode (diese .class-Dateien, die man dann häufig zu .jar-Dateien zusammenfasst) übersetzt werden, der dann von einer virtuellen Maschine (meist java genannt) verstanden wird. Diese führt den Bytecode aus - ob dieser interpretiert oder nochmals kompiliert wird, ist nicht festgelegt sondern, der einzelnen Implementierung überlassen. Suns Hotspot-VM macht beides. Die VM beginnt, Code zu interpretieren und dabei zu zählen, wie häufig der Code durchlaufen wird. Passiert dies oft genug, wird der Abschnitt in Maschinensprache übersetzt und diese wird ab dann ausgeführt.

CPython (meist python genannt) nimmt direkt den Python-Quelltext entgegen, übersetzt ihn für den Benutzer unsichtbar in Bytecode und führt dann diesen Bytecode aus. Bei CPython ist dies ein einfacher Interpreter. Eine Übersetzung in Maschinensprache findet nicht statt - könnte aber. CPython schreibt den Bytecode (diese .pyc-Dateien, die überall auftauchen) zusätzlich in eine Datei, um das Übersetzen des Quelltexts das nächste Mal einsparen zu können. Im Gegensatz zu Java, wo der Bytecode teil der genormten Sprachspezifikation ist, ist der Bytecode von CPython ein Implementationsdetail.

Jython geht daher etwas anders vor: Hier wird der Python-Quelltext in Java-Bytecode übersetzt und dieser dann der Java-VM übergeben, die ihn ausführt wie oben beschrieben.

Stefan