python · Python
Le message
PermissionError: [Errno 13] Permission denied
Ce que cela veut dire
Le système d'exploitation a refusé cette opération sur ce chemin. Vous écriviez dans un endroit appartenant à un autre, comme /var/log ou /usr, ou dans un volume monté d'un conteneur dont l'UID ne correspond pas à l'utilisateur du conteneur, ou — le cas oublié — vous n'avez pas le droit d'écriture sur le répertoire et non sur le fichier, ce qu'exige la création d'un nouveau fichier. Vérifiez d'abord propriétaire et mode avec ls -ld, et avant de recourir à sudo, envisagez de déplacer le chemin là où vous pouvez écrire : un fichier créé sous sudo redonnera la même erreur la fois suivante sans sudo.
Le correctif
ls -ld /var/log/app.log- Émis par
- python
- Python
- 18
Une trace Python coupe la réponse en deux : la dernière ligne dit ce qui a échoué, les cadres au-dessus disent où — ne lire que la dernière ligne donne le nom et fait perdre l'endroit ; et pour les erreurs de valeur absente comme NoneType et KeyError, la cause siège presque toujours dans un cadre au-dessus de celui qui a planté.
Lire un message d’erreur
- Lisez à partir de la première ligne. Plus on descend, plus il s’agit des entrailles de l’outil ; la cause est généralement en haut.
- S’il y a un fichier et un numéro de ligne, commencez là — pas la première image de la pile, mais la ligne la plus haute qui nomme un fichier de vous.
- Cherchez le message tel quel, mais retirez d’abord vos chemins et vos noms de variables : c’est cela qui empêche la correspondance.
- La même situation se formule autrement selon la version de l’outil. Si les résultats sonnent faux, ajoutez le numéro de version.
- Avant de coller un correctif, vérifiez ce qu’il jette. Certains sont irréversibles.
Questions fréquentes
Q. Que veut dire « PermissionError: [Errno 13] Permission denied » ?
Le système d'exploitation a refusé cette opération sur ce chemin. Vous écriviez dans un endroit appartenant à un autre, comme /var/log ou /usr, ou dans un volume monté d'un conteneur dont l'UID ne correspond pas à l'utilisateur du conteneur, ou — le cas oublié — vous n'avez pas le droit d'écriture sur le répertoire et non sur le fichier, ce qu'exige la création d'un nouveau fichier. Vérifiez d'abord propriétaire et mode avec ls -ld, et avant de recourir à sudo, envisagez de déplacer le chemin là où vous pouvez écrire : un fichier créé sous sudo redonnera la même erreur la fois suivante sans sudo.
Q. Comment le corriger ?
ls -ld /var/log/app.log — avant de le lancer, vérifiez plus haut ce que cette commande jette.
Q. Quel outil émet cela ?
python. Cela relève de Python, et le message compte 5 mots.