Start·Fehlermeldungen

python · Python

Die Meldung

SyntaxError: invalid syntax

Was es bedeutet

Der Parser konnte aus dem Gefundenen keine Anweisung bilden, und die Ursache liegt meist in der Zeile davor, nicht in der gemeldeten. Eine nicht geschlossene Klammer oder Anführungszeichen, ein fehlender Doppelpunkt oder das print "x" von Python 2 sind die üblichen Gründe — bei offener Klammer läuft der Parser mehrere Zeilen weiter, bevor er aufgibt. python -m py_compile app.py prüft nur die Syntax, ohne etwas auszuführen, und seit 3.10 sind die Meldungen viel genauer, weshalb ein Python-Update selbst schon Diagnose ist.

Die Lösung

python -m py_compile app.py
Ausgegeben von
python
Python
18

Ein Python-Traceback teilt die Antwort in zwei Hälften — die letzte Zeile sagt, was schiefging, die Rahmen darüber sagen, wo — wer also nur die letzte Zeile liest, kennt den Namen und verliert den Ort; und bei den „Wert fehlt“-Fehlern wie NoneType und KeyError liegt die Ursache fast immer in einem Rahmen über dem abgestürzten.

Eine Fehlermeldung lesen

  • Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
  • Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
  • Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
  • Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
  • Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.

Häufige Fragen

Q. Was bedeutet „SyntaxError: invalid syntax“?

Der Parser konnte aus dem Gefundenen keine Anweisung bilden, und die Ursache liegt meist in der Zeile davor, nicht in der gemeldeten. Eine nicht geschlossene Klammer oder Anführungszeichen, ein fehlender Doppelpunkt oder das print "x" von Python 2 sind die üblichen Gründe — bei offener Klammer läuft der Parser mehrere Zeilen weiter, bevor er aufgibt. python -m py_compile app.py prüft nur die Syntax, ohne etwas auszuführen, und seit 3.10 sind die Meldungen viel genauer, weshalb ein Python-Update selbst schon Diagnose ist.

Q. Wie behebe ich das?

python -m py_compile app.py — vor dem Ausführen oben prüfen, was dieser Befehl verwirft.

Q. Welches Werkzeug gibt das aus?

python. Es gehört zu Python, und die Meldung hat 3 Wörter.

Verwandte Fehler