Start·Fehlermeldungen

python · Python

Die Meldung

OSError: [Errno 98] Address already in use

Was es bedeutet

Das bind schlug fehl, weil ein anderer Prozess den Port schon hält. Entweder ist der vorige Server nicht ganz gestorben, ein Auto-Reloader hat zwei Kopien gestartet, oder ein Docker-Container veröffentlicht denselben Port bereits. lsof -i :8000 nennt die PID, die ihn hält, damit Sie nur diese beenden — lesen Sie den Prozessnamen, bevor Sie irgendetwas mit kill -9 abschießen. Die errno unterscheidet sich je System: Linux zeigt hier 98, macOS 48.

Die Lösung

lsof -i :8000
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 „OSError: [Errno 98] Address already in use“?

Das bind schlug fehl, weil ein anderer Prozess den Port schon hält. Entweder ist der vorige Server nicht ganz gestorben, ein Auto-Reloader hat zwei Kopien gestartet, oder ein Docker-Container veröffentlicht denselben Port bereits. lsof -i :8000 nennt die PID, die ihn hält, damit Sie nur diese beenden — lesen Sie den Prozessnamen, bevor Sie irgendetwas mit kill -9 abschießen. Die errno unterscheidet sich je System: Linux zeigt hier 98, macOS 48.

Q. Wie behebe ich das?

lsof -i :8000 — 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 7 Wörter.

Verwandte Fehler