script unter windows ausführen

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
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

Hallo,
ich habe ein kleines script, welches in einem Zeitintervall einige Aufgaben abarbeitet und die Ergebnisse in einem scrolltext-widget per tkinter anzeigt.

Funktioniert soweit einwandfrei.

Nun soll es über den Windows-Scheduler gestartet werden, aber da geht es "nicht richtig los". Das tkinter-fenster wird nicht angezeigt, und meine Aufgaben werden per after wahrscheinlich auch nicht ausgeführt.
Keine Fehlermeldungen.

Starte ich das script über die cmd-console funktioniert es.
Starte ich es über den Datei-Explorer mit "Start per IDE" geht es auch.

Wo liegt da mein Fehler?

Unter Linux läuft es einwandfrei in der IDE (eric) und auch per Ausführen im Terminal.

Grüße
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Batch-Script schreiben, das in das Verzeichnis der *.py-Datei wechselt und diese dann ausführt. ;)
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Hmm, ich glaube das ist noch trickyer. Das Skript läuft in einem anderen Kontext, es braucht Zugriff auf den PC.
Vielleicht hilft das hier weiter: http://bytes.com/topic/windows/answers/ ... uled-tasks
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

ice2k3 hat geschrieben:Batch-Script schreiben, das in das Verzeichnis der *.py-Datei wechselt und diese dann ausführt. ;)
Das Ergebnis ist leider das gleiche.
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

mkesper hat geschrieben:Hmm, ich glaube das ist noch trickyer. Das Skript läuft in einem anderen Kontext, es braucht Zugriff auf den PC.
Vielleicht hilft das hier weiter: http://bytes.com/topic/windows/answers/ ... uled-tasks
Ich denke das hat mit dem Scheduler gar nix zu tun.
Wenn ich im Dateiexplorer per Doppelklick versuche das Script zu starten läuft es manchmal normal, und manchmal geht es offenbar nicht in den main_loop der form:

Code: Alles auswählen

mything = my_form()
mything.master.title ( "Meine Form" )
mything.mainloop()
Ich logge wichtige Ereignisse in eine db. Der Start wird in der Regel geloggt (noch for dem mainloop).

Keine Probleme gibt es wenn ich es aus der Python IDLE starte.

Grüße
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

pPilger hat geschrieben: Ich denke das hat mit dem Scheduler gar nix zu tun.
Wenn ich im Dateiexplorer per Doppelklick versuche das Script zu starten läuft es manchmal normal, und manchmal geht es offenbar nicht in den main_loop
Und was passiert, wenn es nicht in den Loop geht? Exception?

Und was ist mit dem Start über Kommandozeile?
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

ice2k3 hat geschrieben:Und was passiert, wenn es nicht in den Loop geht? Exception?

Und was ist mit dem Start über Kommandozeile?
Keine Exception, sonst hätte ich ja einen Anhaltspunkt.
Über die Kommandozeile funktioniert es manchmal. Wenn nicht, keine Meldung, nix, einfach im Nirvana.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Wenn es aus IDLE heraus richtig startet, sonst aber nocht, verwendest du vermutlich Tkinter und hast Probleme mit deiner mainloop.
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

mkesper hat geschrieben:Wenn es aus IDLE heraus richtig startet, sonst aber nocht, verwendest du vermutlich Tkinter und hast Probleme mit deiner mainloop.
Ja, TKinter. Und welche Probleme könnte ich haben?
Bzw. Wie krieg ich die raus?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Bevor rumgeraten wird: hast du vielleicht ein Minimalbeispiel bei dem der Fehler auftritt? Beim Erstellen fällst du vielleicht schon von selbst über das Problem, wenn nicht, ist der Code für eine weitere Analyse hier sicher hilfreich.
Das Leben ist wie ein Tennisball.
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

EyDu hat geschrieben:Hallo.

Bevor rumgeraten wird: hast du vielleicht ein Minimalbeispiel bei dem der Fehler auftritt? Beim Erstellen fällst du vielleicht schon von selbst über das Problem, wenn nicht, ist der Code für eine weitere Analyse hier sicher hilfreich.
Es hat etwas gedauert.
Jetzt hab ich mal alles raus was nicht nötig ist.
Das Problem ist also, dass dieses script nach unterschiedlicher Laufzeit einfach stehen bleibt.
Aber nur, wenn ich es mit pythonw.exe unter winXP ausführe.
Starte ich es per IDLE oder normal als py-script läuft es einwandfrei. Auch unter Linux gibts keine Probleme.
Woran kann das liegen?

Das script tut eigentlich nicht mehr als Daten aus einer Text-Datei herauszuholen und in Abhängigkeit vom Inhalt den Inhalt einer anderen txt-Datei zu lesen.

Hier der Code: http://paste.pocoo.org/show/193893/
Zuletzt geändert von pPilger am Donnerstag 25. März 2010, 20:44, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Bitte lagere Deinen Code in ein Paste-bin aus (paste.pocoo.org). Das Board verkraftet so viele Code nur schlecht!
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Ich habe mir das Skript nicht richtig angeschaut, aber ich vermisse zumindest ein Tk().
MfG
HWK
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

Hyperion hat geschrieben:Bitte lagere Deinen Code in ein Paste-bin aus (paste.pocoo.org). Das Board verkraftet so viele Code nur schlecht!
Hier ist es:
http://paste.pocoo.org/show/193893/
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hast Du es denn mal mit dem Einfügen eines "root widget"s Tk() versucht?
MfG
HWK
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

HWK hat geschrieben:Hast Du es denn mal mit dem Einfügen eines "root widget"s Tk() versucht?
MfG
HWK
Also so: root = Tk()
Aber ich benutze doch dieses Frame-Modul, oder wie nennt man das richtig:
class my_form( Frame )

Der mainloop kann dann doch nur auf:

Code: Alles auswählen

mything = my_form()
mything.mainloop()
erfolgen und nicht auf dieses Tk-root.

Grüße
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Code: Alles auswählen

root = Tk()
mything = my_form(root)
root.mainloop()
MfG
HWK
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Tk-Fragen dürfen auch gern im TK-Forum gestellt werden. :)
pPilger
User
Beiträge: 45
Registriert: Montag 8. Februar 2010, 17:30

HWK hat geschrieben:

Code: Alles auswählen

root = Tk()
mything = my_form(root)
root.mainloop()
MfG
HWK
Ja, das hatte ich inzwischen gemacht, hat aber keine Änderung gebracht.
Danke
Antworten