Forum: PC-Programmierung Python für Windows compilieren


von Robin (Gast)


Lesenswert?

Hi,

ich möchte eine Python Datei für Windiws compilieren, so dass ich auf 
dem Zielrechner nicht immer Python installieren muss.

Dazu habe ich mir pyinstaller geholt, aber irgendwie werden die 
impirtdateien ignoriert....

Wenn ich die frisch erstellte exe ausführe läuft zwar die hauptschleife, 
aber wenn es dann die "nebenschleife" anspricht bricht das Programm ab.

Hier mal das Hauptprogramm

def main():
            input = input("A für neu, B für alt")
            if input == 'A':
                import new_version.py


            elif zahlinput == 'B':
                import old_version.py

if _name_ == '__main__':
        main()

von Sven B. (scummos)


Lesenswert?

Sag mal, hast du mal Python benutzt ohne das direkt deployen zu wollen? 
Dein Programm funktioniert so nie, "import new_version.py" ist Quatsch. 
Das .py gehört da nicht hin.

input = input(...) ist extrem schlechter Stil weil du damit das builtin 
input() überschreibst.

: Bearbeitet durch User
von Robin (Gast)


Lesenswert?

Ohne den Compiler läuft das.

von Sven B. (scummos)


Lesenswert?

Glaub' ich dir nicht. Führst du tatsächlich genau dieses Skript in einem 
Interpreter aus?
Schau mal, bei dem elif hast du sogar noch den falschen Variablennamen 
stehen ...

Außerdem ist das kein Compiler.

: Bearbeitet durch User
von Robin (Gast)


Lesenswert?

Sven B. schrieb:
> Schau mal, bei dem elif hast du sogar noch den falschen Variablennamen
> stehen ...

Das erklärt, warum das zuletzt nicht mehr ging auszuwählen!

Aber ja, ich führe das genauso aus.

von Sven B. (scummos)


Lesenswert?

Weiß jetzt nicht was ich dazu noch sagen soll, du postest ja nichtmal 
eine Fehlermeldung und es kann so offensichtlich nicht gehen ... ich 
wünsch dir noch viel Glück bei der Fehlersuche, so kann ich dir wirklich 
nicht helfen.

von Karl (Gast)


Lesenswert?

Was soll es überhaupt für einen Sinn ergeben? Beschreib dein Problem, da 
gibt es sicher elegantere Lösungen.

von Wolfgang S. (ws01)


Lesenswert?

Robin schrieb:

> ich möchte eine Python Datei für Windiws

Du meinst vermutlich ein Python-Script und Windows.

>compilieren,

Das gibt's nicht. Python übersetzt zwar in einen Zwischencode, der ist 
aber vom Betriebssystem unabhängig. Kannst Du ausprobieren, indem Du es 
kompilierst (->http://effbot.org/pyfaq/how-do-i-create-a-pyc-file.htm, 
einfachste Methode: importieren) und das .pyc und nur dieses von Windows 
zu irgend einer Linuxbüchse rüberschaffst. Wenn eine passende Version 
verfügbar ist (also z.B. 2.7 hier wie da), läuft das anstandslos.


>so dass ich auf
> dem Zielrechner nicht immer Python installieren muss.

Wenn das so gemeint wie geschrieben ist, wird kein Weg z.B. an Cython 
o.ä. vorbeiführen (das kompiliert tatsächlich in C und das kompiliert 
man dann mit einem C-Compiler). Ist i.d.R. aber eine Menge Arbeit.


>
> Dazu habe ich mir pyinstaller geholt, aber irgendwie werden die
> impirtdateien ignoriert....

Das ist kein Compiler und Dein Programm ergibt, wie andere schon 
schrieben, überhaupt keinen Sinn.

Außer als Demonstration dafür, daß bei manchen Programmen auf der 
Zielmaschine zwingend ein komplettes Python vorhanden sein muß. 
Hausaufgabe? Troll? Oder wirklich blutiger Anfänger? Erzähl doch mal 
etwas mehr.

von Robin (Gast)


Lesenswert?

Als folgendes.

Ich habe 2x 2 fertige Python scripte. Die nicht von mir geschrieben 
wurden!

Ich wollte einen Art "Bootloader" erstellen. Ich wollte ein kleines 
Textbasierendes Menü basteln. Da wird abgefragt welches von diesen 
Scripte gestartet werden soll. Und das dann natürlich starten.

von Robin (Gast)


Lesenswert?

Nachtrag.

Das ganze soll dann am Ende eine exe werden. Dazu habe ich pyinstaller 
verwendet.


Wenn ich die menu.py ausgeführt habe, dann hat das auch funktioniert. Ab 
nach dem erstellen der exe hat er einfach die exe beendet ohne das 
ausgewählte Script zu starten.

von Karl (Gast)


Lesenswert?

Ich könnte mir vorstellen, dass:

if name == '__main__':
        main()


nicht mehr funktioniert. Probier mal es gegzulassen

#if name == '__main__':
main()

von root (Gast)


Lesenswert?

> Ich habe 2x 2 fertige Python scripte. Die nicht von mir geschrieben
> wurden!

wie werden diese aufgerufen?
Enthalten sie die Zeile ...
if _name_ == "__main__":
    run()

Wenn diese Dateien als Modul importiert werden,
ist _name__ nicht auf __main_ gesetzt und du musst
Modulname.run() selbst aufrufen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.