Script mit Doppelklick starten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bieler
User
Beiträge: 5
Registriert: Donnerstag 4. Februar 2016, 10:34

Ich besitze bereits Programmiererfahrung und möchte mich jetzt in Python einarbeiten.

Wenn ich ein Script in der Shell starte gibt es kein Problem, wenn ich jedoch mit Doppelklick aus dem Windows-Explorer starte, verschwindet die Ausgabe sofort wieder. Lt. Tutorial soll nach "input()" ein Stop erfolgen, tut es aber nicht.

Ich arbeite mit Windows 10 Home x64 und Python 3.5.0a2
BlackJack

@bieler: Doch das tut `input()` schon — wenn es denn ausgeführt wird. Falls es aber davor beispielsweise zu einer Ausnahme kommt, so dass der Aufruf von `input()` nicht erreicht wird, kann es natürlich auch den Programmfluss nicht aufhalten. Darum ist das auch nicht dazu geeignet wofür das Tutorial, welches Du verwendest, es anscheinend vorschlägt. Und es wird, wenn es erreicht und ausgeführt wird, Benutzer nerven die Konsolenprogramme dort ausführen wo man sie ausführen sollte: in einer vorher geöffneten Konsole. Denn die müssen dann am Ende unnötigerweise immer noch mal die Eingabetaste drücken um wieder zur Shell zurückzukehren ohne dass das einen Sinn ergäbe.
bieler
User
Beiträge: 5
Registriert: Donnerstag 4. Februar 2016, 10:34

Wie gesagt, ich bin neu bei Python und bin am testen und einarbeiten.

Ein einfaches Script, ok in der Praxis ohne Bedeutung

Code: Alles auswählen

print("Python lernen!")
 input()
wird ohne irgendwelche Fehlemeldung, welche auch, sofort verlassen.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Hast du verschiedene Versionen von Python (z. B. 3.5 und 2.7) installiert!? Es kann sein, dass durch Doppelklick das Skript mit Python 2.7 gestartet wird. Das wäre bei mir die häufigste Fehlerursache.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@bieler: ja, weil das Script mit einem IndentationError abbricht, also kommt es gar nicht dazu, dass das Skript ausgeführt und am input anhalten könnte. Konsolenprogramme werden in der Konsole gestartet.
bieler
User
Beiträge: 5
Registriert: Donnerstag 4. Februar 2016, 10:34

@lpixewakb
Nein, habe es gerade nochmals überprüft.

@ sirius3
Konsolenprogramme werden in der Konsole gestartet.
Schon klar, ich bin wie gesagt in der ersten Einarbeitungsphase. Was muss ich denn tun, um Scripte über den Doppelklick zu starten um ohne die IDE zu arbeiten. Natürlich nicht bei einem solch einfachen Script.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Versuch bitte mal folgendes Programm bei Dir und dann ersetze die Zeilen mit #1 und #2 durch dein eigentliches Programm. Beachte bitte die Einrückung. Das Skript schreibt dir die Fehlermeldung in eine Textdatei error.log. Den Inhalt könntest Du dann bitte hier - bereinigt um personenbezogene Daten - hier posen. Danke!
[Codebox=python file=Unbenannt.py]import traceback

try:
print("Dein Quellcode") # 1
a = 1 / 0 # 2

except:

tb = traceback.format_exc()

with open("error.log", "w") as f:
f.write(tb)[/Codebox]

PS Ich verwende die erste Code-Option ("Code auswählen"), welche muss ich denn (noch mal) anwählen, um da ein korrektes Ergebnis zu erhalten.
BlackJack

@bieler: Ist das jetzt ein Kommunikationsproblem oder willst Du wirklich mit aller Gewalt Konsolenprogramme per Doppelklick starten? Konsolenprogramme sind dazu gedacht in einer Konsole gestartet zu werden. Man öffnet die Konsole, wechselt in das Verzeichnis mit dem Programm, solange es nicht in einem Verzeichnis liegt welches in der %PATH%-Umgebungsvariable enthalten ist, und dann startet man das Programm in der Konsole wie jedes andere Konsolenprogramm auch. Die Konsole ist vorher geöffnet, das Programm wird ausgeführt, und egal warum es zum Ende kommt, regulär oder wegen einer Ausnahme, bleibt die Konsole auch hinterher offen. Und man kann es erneut starten, zum Beispiel nachdem man einen eventuellen Fehler beseitigt hat, oder es weiterentwickelt hat.
bieler
User
Beiträge: 5
Registriert: Donnerstag 4. Februar 2016, 10:34

willst Du wirklich mit aller Gewalt Konsolenprogramme per Doppelklick starten?
Nein, sollte eigentlich nur ein harmloser Test sein. Mir war nicht klar, dass die Funktion "print()" nur in der Konsole läuft.

OK, werde mich mal weiter in die Einarbeitung stürzen und wahrscheinlich später noch paar dumme Fragen stellen. Meine bisherigen Programmiererfahrungen bezogen sich nicht auf Scriptsprachen, deshalb war mir das Handling mit einer Konsole nicht geläufig.
BlackJack

@bieler: Das hat nichts mit ”Scriptsprachen” zu tun, man kann mit Python auch GUI-Programme schreiben und Konsolenprogramme die in anderen Sprachen geschrieben wurden startet man auch direkt in der Konsole. Darum heissen sie ja Konsolenprogramme. ;-)

Auch bei GUI-Programmen, egal in welcher Sprache geschrieben, ist zumindest für Entwickler ein Start von der Konsole aus auch nicht unüblich, weil man da oft Ausgaben zur Fehlersuche macht, die man gerne sehen möchte. Einzig Windowsanwendungen erschweren das, weil das System dort stärker zwischen GUI- und Konsolenprogrammen unterscheidet und GUI-Programmen standardmässig erst einmal nicht die üblichen Standardein- und ausgaben zur Verfügung stellt.

`print()` schreibt auf die Standardausgabe des Prozesses. Das muss nicht zwangsläufig eine Konsole sein. Was mit diesen Daten passiert, entscheidet das Programm, welches den Prozess gestartet hat. Eine grafische IDE kann die Daten beispielsweise in einem Textfeld anzeigen.
bieler
User
Beiträge: 5
Registriert: Donnerstag 4. Februar 2016, 10:34

OK, alles klar. Danke für die Erläuterungen.
Antworten