Python unter Windows - SyntaxError finden

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
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Hi, wenn ich ein Skript mittels Python aufrufe - lädt einige Tools nach - läuft alles durch, wenn ich es unter Windows aufrufe, also direkt im Konsolenfenster, dann sehe ich ganz, ganz kurz eine Fehlermeldung (die ich so schnell nicht lesen kann) und anschließend ist es vorbei. Wenn ich es mit der Eingabeaufforderung öffne, tut sich auch nichts - kein Fehler.

Hat jemand eine Idee, worum es sich handeln könnte!? Habe schon an ein Umlaut-Problem gedacht.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Fehler gelöst.

Ich habe dieses Codebeispiel im Netz gefunden (grob angepasst):

Code: Alles auswählen

import logging

logging.basicConfig(level=logging.DEBUG, filename='errors.log')

try:
    1/0
except:
    logging.exception("Error")
Damit konnte ich dann die Fehlermeldung auf die Platte bannen und dann den Fehler ausfindig machen. Ein importiertes Skript hat den Fehler verursacht - da hätte ich (Jahre) suchen können...
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Doch leider nicht gelöst.

Ich habe jetzt u. a. folgende Fehlermeldung:

Code: Alles auswählen

ImportError
Ich bräuchte mal Verständnishilfe:

Wenn ich das Tool mit Idle ausführe läuft alles durch, wenn ich es durch Doppelklick starte, dann bricht das Programm den Abruf ab und sagt mir, dass das Modul nicht geladen werden kann. Ich teste es mit Idle und alles läuft durch. Es handelt sich dabei um selbstgeschriebene Software, das Modul habe ich mit einer setup.py-Datei in meinem System verfügbar gemacht.

Irgendjemand eine Idee, wie so ein Fehler auftreten kann!? Beim Skript (Funktion und Daten habe ich zusammengefügt) wechselt die Fehlermeldung momentan (zuerst war es ein Syntaxfehler, jetzt das). Gefühlt ist da irgendetwas anders mit kaputt.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Glaskugel: Arbeitsverzeichnis (os.getcwd) oder sys.path.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Arbeitsverzeichnis (os.getcwd) oder sys.path.

Ich versuche mal meine Gedanken zu formulieren:

Wenn ich es mit Eingabeaufforderung python setup.py install nach Python3.4 installiere und dann ein Skript aufrufe, dann ist es verfügbar, warum spielt sys.path oder os.getcwd da noch eine Rolle!?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Was bwbg sagen wollte: Wenn du weder Code noch Traceback zeigst, dann kann man nur raten.
Das Leben ist wie ein Tennisball.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Code -> es ist Spaghetti (Daten, Code und Importe).

Traceback kriege ich gerade nicht, weil das Skript da keinen Fehler in eine Logdatei schreibt. Mom.

Aber jetzt:

Code: Alles auswählen

ERROR:root:Oops:
Traceback (most recent call last):
  File "C:\Users\...\Zufallsgenerator.py", line 28, in <module>
    from HtmlEmailVersand import emailversand
  File "C:\Users\...\HtmlEmailVersand.py", line 124
    print(".", end="")
                  ^
SyntaxError: invalid syntax
Das Skript HtmlEmailVersand import wiederum einige Skripte.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@pixewakb: wenn Du Fehler sehen willst, solltest Du Deine Programme nicht mit Doppelklick starten sondern im cmd-Fenster. Der Fehler ist doch eindeutig: Du startest Dein Python3-Skript mit Python 2.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Autsch. :oops:

Ich habe heute einige Stunden darauf verwendet das Problem zu finden und ja, das erklärt mir (jetzt), warum dann - nach Lösung des Syntax-Fehlers - das Modul nicht mehr verfügbar ist. Das ist unter Python3.4 installiert.

Ich frage mal ganz doof: Woran hätte ich bemerken können, dass das die Ursache ist. Im CMD-Fenster lief es tadellos (ohne Fehlermeldung). Ich habe im System Python 3.4 und Python 2.7 installiert.

Zum Hintergrund: Das Tool wählt aus einer Grundgesamtheit Wertepaare aus und weist sie mir per E-Mail zu, so dass ich es mir bei Gelegenheit ansehen kann. Ich hätte eine pyw-Datei gern, dass es im Autostart aufgerufen wird, dann im Hintergrund (pyw) läuft (hat eine Zeitsteuerung an Bord).

Gibt es eine einfache Lösung, z. B. dass Python-Skripte mit Python 3.4 geöffnet werden anstatt mit Python 2.7? Drüberinstallieren? Eine Auswahl von python.exe im Python 3.4-Ordner mittels Öffnen mit bringt nicht das gewünschte Ergebnis, d. h. löst mein Problem nicht.
BlackJack

@pixewakb: Es gibt bei Python 3 für Windows einen Starter der anhand der ersten Zeile im Skript die passende Python-Version verwendet.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Danke! Hat funktioniert.

Erste Zeile entweder

Code: Alles auswählen

#!/usr/bin/env python3
oder

Code: Alles auswählen

#!/usr/bin/env python2
Eine Information (inzwischen ist das wohl in Python 3 enthalten) findet sich hier.

Danke allen für die Hilfe.
Antworten