Start·Fehlermeldungen

python · Python

Die Meldung

PermissionError: [Errno 13] Permission denied

Was es bedeutet

Das Betriebssystem hat diese Operation auf diesem Pfad verweigert. Sie haben in fremden Besitz geschrieben, etwa /var/log oder /usr, oder in ein gemountetes Volume im Container, dessen UID nicht zum Container-Benutzer passt, oder — der übersehene Fall — Ihnen fehlt das Schreibrecht am Verzeichnis statt an der Datei, und genau das braucht das Anlegen einer neuen Datei. Prüfen Sie zuerst Eigentümer und Modus mit ls -ld, und bevor Sie zu sudo greifen, verlegen Sie den Pfad besser dorthin, wo Sie schreiben dürfen: eine unter sudo erzeugte Datei wirft beim nächsten Öffnen ohne sudo denselben Fehler.

Die Lösung

ls -ld /var/log/app.log
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 „PermissionError: [Errno 13] Permission denied“?

Das Betriebssystem hat diese Operation auf diesem Pfad verweigert. Sie haben in fremden Besitz geschrieben, etwa /var/log oder /usr, oder in ein gemountetes Volume im Container, dessen UID nicht zum Container-Benutzer passt, oder — der übersehene Fall — Ihnen fehlt das Schreibrecht am Verzeichnis statt an der Datei, und genau das braucht das Anlegen einer neuen Datei. Prüfen Sie zuerst Eigentümer und Modus mit ls -ld, und bevor Sie zu sudo greifen, verlegen Sie den Pfad besser dorthin, wo Sie schreiben dürfen: eine unter sudo erzeugte Datei wirft beim nächsten Öffnen ohne sudo denselben Fehler.

Q. Wie behebe ich das?

ls -ld /var/log/app.log — 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 5 Wörter.

Verwandte Fehler