"Berechtigung verweigert" beim Versuch, Python unter Windows 10 auszuführen

108

Es scheint, als hätte ein Update unter Windows 10 Python über Nacht kaputt gemacht. Beim Versuch, das python --versionProgramm auszuführen, wurde der Fehler "Berechtigung verweigert" zurückgegeben. Keines der drei Updates; KB4507453, KB4506991 oder KB4509096 scheinen der Schuldige zu sein, aber der Zeitpunkt des Problems ist verdächtig. Anstatt mit dem Zurückrollen herumzuspielen, hoffe ich, dass es eine einfachere Lösung gibt, die mir fehlt.

Die Berechtigungen für Python lauten "-rwxr-xr-x", und ich habe nichts geändert, außer dass der Windows-Update-Computer nach der Installation der Patches von gestern Abend neu gestartet wird.

Laut Systeminformationen verwende ich 10.0.18362

Sollte auch beachten, dass dies geschieht, unabhängig davon, ob ich Python aus git-bash mit "Als Administrator ausführen" ausführen möchte oder nicht. Wenn ich PowerShell verwende, wird der Windows Store nur so geöffnet, als ob die App nicht installiert wäre Ich denke, der Inhalt meines /c/Users/david/AppData/Local/Microsoft/WindowsApps/Ordners kann aus irgendeinem Grund nicht angezeigt werden.

Ich habe auch versucht, Python 3.7.4 neu zu installieren, aber das hat auch nicht geholfen. Gibt es noch etwas, auf das ich achten sollte?

notanumber
quelle
Es lohnt sich wahrscheinlich, die Microsoft-Website zu besuchen. Ich habe irgendwo gelesen, kann mich leider nicht erinnern, wo andere Leute Probleme mit diesem Update hatten - leerer Bildschirm, denke ich. Wie auch immer, das Warten, bis sie es in ein oder zwei Tagen behoben haben, könnte sich als die Antwort herausstellen.
Ameise
Übrigens ist "Berechtigungen für Python sind '-rwxr-xr-x'" in Windows wahrscheinlich bedeutungslos. Das ist eine Fälschung, die von einer Unix-ähnlichen Umgebung wie MSYS2 oder git-bash gemeldet wird.
Eryk Sun
Nee. Dies ist das Python-Paket von python.org. Dasselbe funktioniert seit Jahren ohne Probleme und hat gerade angefangen, mit dem neuesten Windows-Patch zu arbeiten.
Notanumber
Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem.
Shanks
Unglücklicherweise nicht. Ich habe damit gelebt, da ich den größten Teil meiner Arbeit in Docker erledige. Wenn ich das tue, werde ich sicher meine Ergebnisse veröffentlichen!
Notanumber

Antworten:

178

Soweit ich das beurteilen kann, wurde dies durch einen Konflikt mit der Version von Python 3.7 verursacht, die kürzlich zum Windows Store hinzugefügt wurde. Es sieht so aus, als hätten zwei "Stubs" namens "python.exe" und "python3.exe" in den %USERPROFILE%\AppData\Local\Microsoft\WindowsAppsOrdner eingefügt. In meinem Fall wurde dies vor dem Eintrag meiner vorhandenen ausführbaren Python-Datei in der Datei eingefügt PATH.

Durch Verschieben dieses Eintrags unter den richtigen Python-Ordner (teilweise) wurde das Problem behoben.

Der zweite Teil der Korrektur besteht darin, manage app execution aliasesin die Windows-Suchaufforderung einzugeben und die Store-Versionen von Python vollständig zu deaktivieren.

Verwalten von App-Ausführungs-Aliasen

Es ist möglich, dass Sie nur den zweiten Teil ausführen müssen, aber auf meinem System habe ich beide Änderungen vorgenommen und jetzt ist alles wieder normal.

notanumber
quelle
47
(Microsoft-Mitarbeiter und CPython-Kernentwickler hier) Sie müssen definitiv nur den zweiten Teil ausführen. Es gab einige Fehler im Zusammenhang mit dem Aktualisieren von Apps zum Zurücksetzen von Aliasen, die im nächsten stabilen Update behoben werden. Bis dahin sollte es sich also um eine einmalige Lösung handeln. Während Sie Insider-Updates erhalten, müssen Sie dies möglicherweise noch einige Male tun.
Zooba
7
Außerdem ist das Problem "Zugriff verweigert" ein Git-Bash-Fehler (oder wer auch immer seinen Bash-Port verwaltet ... Ich bin mir nicht sicher, wer es ist). Das Starten des Stores ist eine neue Funktion, mit der Benutzer Python installieren können. Wenn Sie es mit dem regulären Installationsprogramm zu PATH hinzugefügt haben, sollte es Vorrang vor dem neuen Redirector haben. Wenn dies nicht der Fall ist, haben Sie oben herausgefunden, wie Sie es deaktivieren können.
Zooba
4
Ich musste nur zum zweiten Teil, um dieses Problem für mich zu beheben.
kennyB
5
Für mich musste ich auch Python zu meinem Pfad hinzufügen (C: \ Users \ YourUsernameHere \ AppData \ Local \ Programs \ Python \ Python37), damit git bash Python
Niels
1
Es war meine Lösung, es meinem Weg hinzuzufügen und nach oben zu verschieben, genau wie Neils. Die Tatsache, dass ich den Stub nicht einfach für den Windows Store-Stub umbenennen kann, ist ziemlich ärgerlich.
John W. Clark
23

Forschung

Alle Dateien in %USERPROFILE%\AppData\Local\Microsoft\WindowsAppssind Platzhalter, die auf Dateien verweisen, die sich tatsächlich irgendwo in befinden C:\Program Files\WindowsApps, wodurch die Berechtigungen vollständig verweigert werden.

Es scheint, dass ich mit meiner Aussage in meinem Duplikat dieses Problems auf dem richtigen Weg war:

"Scheint, als hätten sie nicht wirklich über die Verteilungsmethode nachgedacht, die mit Berechtigungen verschraubt wurde!"

Quelle: Pylint kann in Git Bash unter Windows nicht installiert werden (Windows Store)

Berechtigungen werden aufgrund der WindowsApps-Verteilungsmethode königlich vermasselt:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Interessanterweise heißt es, dass die Gruppe "Benutzer" Dateien sowie meinen spezifischen Benutzer lesen und ausführen kann, aber die Gruppe Administratoren kann nur Ordnerinhalte aus einem unglaublich unergründlichen Grund auflisten. Und wenn versucht wird, auf den Ordner im Datei-Explorer zuzugreifen, wird nicht einmal der Ordnerinhalt angezeigt, daher ist auch daran etwas faul.

Interessanterweise wird pythonder Ordner "WindowsApps" nicht angezeigt , obwohl die Ausführung in CMD einwandfrei funktioniert, wenn die Dateien in dem Verzeichnis aufgelistet werden, in dem er sich befindet. Wenn Sie versuchen, in den Ordner zu navigieren, wird der Fehler "Berechtigung verweigert" generiert:

Geben Sie hier die Bildbeschreibung ein

Um die Berechtigungen ändern zu können, muss zuerst der Eigentümer geändert werden. Daher habe ich den Eigentümer in die Gruppe Administratoren geändert. Danach habe ich versucht, die Berechtigungen für die Gruppe "Administratoren" so zu ändern, dass sie "Vollzugriff" enthalten, aber dies konnte nicht geändert werden, da "Zugriff verweigert" wurde (duh, Micro $ ucks, das versuchen wir zu ändern!).

Geben Sie hier die Bildbeschreibung ein

Dieser Berechtigungsfehler trat bei so vielen Dateien auf, dass ich bei wiederholten Nachrichten mit Alt + C schnell auf "Weiter" geklickt habe. Dies dauerte jedoch immer noch zu lange. Daher habe ich den Vorgang abgebrochen, sodass folgende Warnmeldung angezeigt wurde:

Geben Sie hier die Bildbeschreibung ein

Und jetzt kann ich den TrustedInstaller-Benutzer nicht mehr als Eigentümer des WindowsApps-Ordners festlegen, da er nicht in der Liste Benutzer / Gruppen / Integrierte Sicherheitsprinzipien / Andere Objekte angezeigt wird. * *

Geben Sie hier die Bildbeschreibung ein

* Gemäß diesem Tutorial können Sie den Eigentümer zurück zu TrustedInstaller wechseln, indem Sie NT Service\TrustedInstallerin das Textfeld Objektname eingeben .

Lösung

Es gibt keine Lösung. Grundsätzlich sind wir komplett angeschraubt. Nobler Zug, Microsoft.

Ryan
quelle
11
(Microsoft-Mitarbeiter und CPython-Kernentwickler hier) Derzeit wird ein Fehler in Windows behoben, bei dem Sie ausführbare Dateien an diesem Speicherort starten können, jedoch nur, wenn Sie den globalen Alias ​​aktiviert haben (unter Aliase zum Verwalten der App-Ausführung). Ich versuche, es so zu ändern, dass Sie die App nur für den aktuellen Benutzer installiert haben müssen.
Zooba
4
Wir können die Berechtigungen über diesen Dialog lesen, da sie einer Instanz von dllhost.exe (Hosting der Security-Shell-Erweiterung rshx32.dll) gehört, die mit Administratorzugriff ausgeführt wird und daher Zugriff auf "Ordnerinhalte auflisten" hat (dh ausführen, synchronisieren und lesen) Daten, Attribute und Berechtigungen). Der Eintrag für die Benutzergruppe ist nicht für eine normale Zugriffsprüfung vorgesehen. Voraussetzung ist das Vorhandensein eines Sicherheitsattributs WIN: // SYSAPPID, dh einer beliebigen App. Der Unterordner für jede App gewährt Benutzern Lesezugriff, der Ausführungszugriff hängt jedoch davon ab, dass er über den App-Link ausgeführt wird, der ein benutzerdefiniertes Zugriffstoken festlegt.
Eryk Sun
@ErykSun Dies ist die erste informierte Antwort, die ich jemals über die Ausführung und Berechtigungen von Windows gesehen habe. Vielen Dank.
Ryan
Ich beschäftige mich immer noch mit den Folgen des Versuchs, die Berechtigungen für den Ordner zu ändern. Bestimmte WinApps wurden nicht mehr gestartet, bis ich die folgenden Anweisungen befolgt habe: ( superuser.com/questions/1288014/… ), aber jetzt geben sie beim Start Fehlermeldungen aus. Ich habe ein älteres Win10-USB-Image verwendet, daher wurden die Berechtigungen wahrscheinlich falsch eingestellt.
Ryan
1
@ MarkSimpson froh, dass dieser Thread geholfen hat. Ich bin mir nicht sicher, was ich geschrieben habe. Bedanken Sie sich unbedingt bei den Microsoft-Mitarbeitern, die in den Kommentaren hier echte Antworten gepostet haben.
Ryan
10

Dieses Problem ist viel zu häufig, um weiterhin bestehen zu können. Und die meisten Antworten und Anweisungen sprechen es nicht an. Folgendes ist unter Windows 10 zu tun:

  1. Geben Sie environment variablesdie Startsuchleiste ein und öffnen Sie Systemumgebungsvariablen bearbeiten .

  2. Klicken Sie auf Umgebungsvariablen ...

  3. Suchen Sie im Abschnitt Systemvariablen die Variable mit dem Schlüssel Pathund doppelklicken Sie darauf.

  4. Suchen Sie nach Pfaden, die auf Python-Dateien verweisen. Wahrscheinlich gibt es keine. Wenn ja, wählen Sie sie aus und löschen Sie sie.

  5. Erstellen Sie einen neuen Variablensatz für den Pfad zu Ihrer ausführbaren Python-Datei. Normalerweise ist das so C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38. Stellen Sie dies sicher, indem Sie dies über Ihren Datei-Explorer überprüfen.

    Hinweis : Wenn Sie nicht sehen können AppData, haben Sie die Anzeige versteckter Objekte nicht aktiviert : Klicken Sie auf die Registerkarte Ansicht und aktivieren Sie das Kontrollkästchen Versteckte Objekte.

  6. Erstellen Sie eine weitere Variable, die auf das ScriptsVerzeichnis verweist . Typischerweise ist es so C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts.

  7. Starten Sie den Terminal und versuchen Typisierung py, python, python3, oder python.exe.

Jai
quelle
4

Es ist keine Lösung mit PowerShell, aber ich hatte das gleiche Problem außer mit MINGW64. Ich habe es umgangen, indem ich zu Windows Subsystem für Linux (was ich sowieso tun wollte) als Terminal gewechselt habe, nur allgemein und in VSCode. Dieser Beitrag beschreibt es gut:

So konfigurieren Sie VS Code (Windows) für die Verwendung der Ubuntu App als Terminal

Zusammenfassend:

1) Installieren Sie Ubuntu aus dem Windows App Store

2) Ändern Sie die Standard-Bash von CMD -> wslconfig / setdefault Ubuntu

--- Für VSCode

3) Starten Sie VSCode neu

4) Ändern Sie im VSCode "terminal.integrated.shell.windows" in "C: \ WINDOWS \ System32 \ bash.exe" (weitere Details siehe obigen Beitrag)

Läuft jetzt reibungslos in VSCode und WSL (Bash unter Ubuntu unter Windows). Könnte zumindest eine vorübergehende Lösung für Sie sein.

Schenkel
quelle
3

Durch Hinzufügen des lokalen Python-Pfads vor den WindowsApps wurde das Problem behoben.

Umgebungsvariablen> Pfad

Bash Python - Version

Shirish
quelle
1

Am einfachsten ist es, die Umgebungsvariablen PATH und PYTHONPATH zu ändern, um sicherzustellen, dass der Ordner mit den richtigen Python-Binärdateien vor dem lokalen WindowsApp-Ordner durchsucht wird. Sie können auf die Umgebungsvariablen zugreifen, indem Sie das Bedienfeld öffnen und nach "env" suchen.

Michael Bletzinger
quelle
0

Problemumgehung: Wenn Sie Python von exe installiert haben, führen Sie die folgenden Schritte aus.

Schritt 1: Deinstallieren Sie Python

Schritt 2: Installieren Sie Python und aktivieren Sie das Kontrollkästchen Python-Pfad, wie in der Abbildung unten (gelb) hervorgehoben.

Das hat mich das Problem gelöst.

Geben Sie hier die Bildbeschreibung ein

Shakeel
quelle
-1

Möglicherweise können Sie versuchen, die Eingabeaufforderung mit Administratorrechten zu öffnen. (Als Administrator ausführen). Funktioniert die meiste Zeit für mich.

Imtiyaz Shaikh
quelle
3
Die ausführbare Python-Datei funktioniert in CMD auch ohne Administratorrechte. Das Problem ist, dass es in Git Bash nicht funktioniert, was ein wesentliches Werkzeug für Programmierer ist und die Standardeinstellung ist, und es funktioniert mit jeder anderen Verteilungsmethode für Python, was bedeutet, dass es auch hier funktionieren sollte.
Ryan