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.