web-dev-qa-db-fra.com

"Autorisation refusée" essayant d'exécuter Python sur Windows 10

Il semble qu'une mise à jour de Windows 10 ait brisé Python du jour au lendemain. J'essaye juste d'exécuter python --version a renvoyé une erreur "Autorisation refusée". Aucune des trois mises à jour; KB4507453, KB4506991 ou KB4509096 semblent être le coupable, mais le moment du problème est suspect. Plutôt que de jouer avec le recul, j'espère qu'il y a une solution plus simple qui me manque.

Les autorisations sur python sont "-rwxr-xr-x" et je n'ai rien changé à part laisser la mise à jour de Windows redémarrer la machine après l'installation des correctifs de la nuit dernière.

Selon les informations système, j'exécute 10.0.18362

Doit également noter que cela se produit que j'essaie d'exécuter Python à partir de git-bash en utilisant "exécuter en tant qu'administrateur" ou non, et si j'essaie d'utiliser PowerShell, cela ouvre simplement le magasin Windows comme si l'application n'était pas installée, donc je pense qu'elle ne peut pas voir le contenu de mon /c/Users/david/AppData/Local/Microsoft/WindowsApps/ dossier pour une raison quelconque.

J'ai également essayé de réinstaller Python 3.7.4, mais cela n'a pas aidé non plus. Y a-t-il autre chose que je devrais regarder?

48
notanumber

Pour autant que je sache, cela a été causé par un conflit avec la version de Python 3.7 qui a été récemment ajoutée au Windows Store. Il semble que cela ait ajouté deux "stubs" appelés python.exe et python3.exe dans le dossier %USERPROFILE%\AppData\Local\Microsoft\WindowsApps, Et dans mon cas, cela a été inséré avant mon Python existant entrée de l'exécutable dans le PATH.

Déplacer cette entrée sous le dossier Python correct (partiellement) a corrigé le problème.

La deuxième partie de la correction consiste à taper "gérer les alias d'exécution des applications" dans l'invite de recherche Windows et à désactiver complètement les versions de magasin de Python.

Il est possible que vous n'ayez besoin que de faire la deuxième partie, mais sur mon système, j'ai fait les deux changements et tout est revenu à la normale maintenant.

69
notanumber

Recherche

Tous les fichiers dans %USERPROFILE%\AppData\Local\Microsoft\WindowsApps sont des espaces réservés qui pointent vers des fichiers qui se trouvent réellement quelque part dans C:\Program Files\WindowsApps, qui se voit refuser complètement les autorisations.

Il semble que j'étais sur la bonne voie avec ma déclaration faite dans mon double de ce problème:

"On dirait qu'ils n'ont pas vraiment pensé à la méthode de distribution avec des permissions!"

Source: Impossible d'installer pylint dans Git Bash sur Windows (Windows Store)

Les autorisations sont vissées royalement en raison de la méthode de distribution WindowsApps:

enter image description hereenter image description hereenter image description here Il est intéressant de noter que le groupe "Utilisateurs" peut lire et exécuter des fichiers, ainsi que mon utilisateur spécifique, mais le groupe Administrateurs ne peut répertorier le contenu des dossiers que pour une raison hilarante et insondable. Et lorsque vous essayez d'accéder au dossier dans l'Explorateur de fichiers, il refuse même d'afficher le contenu du dossier, donc il y a aussi quelque chose de louche à ce sujet.

Fait intéressant, même si l'exécution de python dans CMD fonctionne très bien, le dossier "WindowsApps" n'apparaît pas lors de la liste des fichiers dans le répertoire dans lequel il réside et la tentative de navigation dans le dossier génère une "autorisation refusée" Erreur:

enter image description here

Tenter de modifier les autorisations nécessite d'abord de changer le propriétaire, j'ai donc changé le propriétaire pour le groupe Administrateurs. Après cela, j'ai tenté de modifier les autorisations pour le groupe Administrateurs afin d'inclure le contrôle total, mais il n'a pas pu le changer, car "l'accès a été refusé" (duh, Micro $ ucks, c'est ce que nous essayons de changer!).

enter image description here

Cette erreur d'autorisation s'est produite pour tant de fichiers que j'ai utilisé Alt + C pour cliquer rapidement sur "Continuer" lors de la répétition des messages, mais cela a pris trop de temps, j'ai donc annulé le processus, ce qui a fait apparaître ce message d'avertissement:

enter image description here

Et maintenant, je ne peux pas redéfinir l'utilisateur TrustedInstaller comme propriétaire du dossier WindowsApps, car il n'apparaît pas dans la liste des utilisateurs/groupes/principes de sécurité intégrés/autres objets. *

enter image description here

* En fait, selon ce tutoriel , vous pouvez remplacer le propriétaire par TrustedInstaller en tapant NT Service\TrustedInstaller dans la zone de texte du nom de l'objet.

Solution

Il n'y a pas de solution. Fondamentalement, nous sommes complètement foutus. Déménagement chic, Microsoft.

14
Ryan

Cela semble être une limitation dans git-bash. La recommandation d'utiliser winpty python.exe a fonctionné pour moi. Voir Python ne fonctionne pas dans la ligne de commande de git bash pour plus d'informations.

4
John Fisher

Ce n'est pas une solution avec PowerShell, mais j'ai eu le même problème sauf avec MINGW64. Je l'ai contourné en passant au sous-système Windows pour Linux (ce que je voulais faire de toute façon) comme terminal, juste en général et en VSCode. Ce post le décrit bien:

Comment configurer VS Code (Windows) pour utiliser Ubuntu App comme terminal

En résumé:

1) Installez Ubuntu depuis le Windows App Store

2) Modifiez le bash par défaut de CMD -> wslconfig/setdefault Ubuntu

--- Pour VSCode

3) Redémarrez VSCode

4) Dans VSCode, remplacez "terminal.integrated.Shell.windows" par "C:\WINDOWS\System32\bash.exe" (pour plus de détails, consultez l'article ci-dessus)

Fonctionne bien maintenant dans VSCode et WSL (Bash sur Ubuntu sur Windows). Cela pourrait être au moins une solution temporaire pour vous.

3
Shanks

La chose la plus simple à faire serait de modifier vos variables d'environnement PATH et PYTHONPATH pour vous assurer que le dossier contenant les bons binaires python sont recherchés avant le dossier local WindowsApp. Vous pouvez accéder aux variables d'environnement en ouvrir le panneau de contrôle et rechercher "env"

0
Michael Bletzinger

Vous pouvez peut-être essayer d'ouvrir l'invite de commande avec des privilèges d'administrateur. (Exécuter en tant qu'administrateur). Fonctionne pour moi la plupart du temps.

0
Imtiyaz Shaikh

vous faire gagner du temps: utilisez wsl and vscode remote extension pour fonctionner correctement avec python même avec win10 et n'oubliez pas virtualenv! utile https://linuxize.com/post/how-to- install-visual-studio-code-on-ubuntu-18-04 /

0
rio