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.