Windows 10에서 Python을 실행하려는 "권한 거부 됨"


126

Windows 10의 업데이트가 하룻밤 사이에 Python을 망가 뜨린 것처럼 보입니다. 실행하려고 python --version하면 "Permission Denied"오류가 반환되었습니다. 세 가지 업데이트가 없습니다. KB4507453, KB4506991 또는 KB4509096이 범인 인 것처럼 보이지만 문제의시기가 의심 스럽습니다. 롤백을 엉망으로 만드는 대신 내가 놓친 더 간단한 수정이 있기를 바랍니다.

파이썬에 대한 권한은 "-rwxr-xr-x"이며 어젯밤 패치를 설치 한 후 Windows 업데이트가 시스템을 재부팅하도록하는 것 외에는 아무것도 변경하지 않았습니다.

시스템 정보에 따르면 10.0.18362를 실행하고 있습니다.

또한 이것은 "관리자 권한으로 실행"을 사용하여 git-bash에서 Python을 실행 (시도)하는지 여부에 관계없이 발생하며, PowerShell을 사용하려고하면 앱이 설치되지 않은 것처럼 Windows 스토어가 열립니다. /c/Users/david/AppData/Local/Microsoft/WindowsApps/어떤 이유로 내 폴더 의 내용을 볼 수 없다고 생각합니다 .

또한 Python 3.7.4를 다시 설치하려고 시도했지만 도움이되지 않았습니다. 내가 봐야 할 다른 것이 있습니까?


아마도 Microsoft 웹 사이트를 확인할 가치가있을 것입니다. 어딘가에서 읽었습니다. 죄송합니다. 다른 사람들이이 업데이트에 문제가 있었던 곳을 기억할 수 없습니다. 빈 화면이라고 생각합니다. 어쨌든 하루나 이틀 안에 고칠 때까지 기다리는 것이 답이 될 수 있습니다.
— 개미

BTW, "파이썬에 대한 권한은 '-rwxr-xr-x'입니다."는 Windows에서 의미가 없을 것입니다. MSYS2 또는 git-bash와 같은 Unix와 유사한 환경에서보고 된 가짜입니다.
— Eryk Sun

아니. 이것은 python.org의 Python 패키지입니다. 수년 동안 아무런 문제없이 작동 해 왔으며 최신 Windows 패치로 작동하기 시작했습니다.
— notanumber

해결책을 찾았습니까? 나는 같은 문제가 있습니다.
— 정강이

불행하게도. Docker에서 대부분의 작업을 수행하면서 함께 살고 있습니다. 그렇게하면 내 결과를 게시 할 것입니다!
— notanumber

답변:


205

내가 알 수있는 한, 이것은 최근에 Windows Store에 추가 된 Python 3.7 버전과의 충돌로 인해 발생했습니다. 이 %USERPROFILE%\AppData\Local\Microsoft\WindowsApps폴더에 python.exe 및 python3.exe라는 두 개의 "스텁"이 추가 된 것 같습니다 . 제 경우에는 .NET Framework의 기존 Python 실행 파일 항목 앞에 삽입 되었습니다 PATH.

이 항목을 올바른 Python 폴더 아래로 (부분적으로) 이동하면 문제가 해결되었습니다.

이를 수정하는 두 번째 부분은 manage app execution aliasesWindows 검색 프롬프트에 입력하고 Python의 저장소 버전을 모두 비활성화하는 것입니다.

앱 실행 별칭 관리

두 번째 부분 만 수행하면 될 수도 있지만 내 시스템에서 두 가지를 모두 변경했으며 이제 모든 것이 정상으로 돌아 왔습니다.


56
(Microsoft 직원 및 CPython 핵심 개발자) 두 번째 부분 만 수행하면됩니다. 다음 안정 업데이트에서 수정 될 별칭 재설정 앱 업그레이드와 관련된 몇 가지 버그가 있었으므로 그때까지 한 번만 수정해야합니다. Insiders 업데이트를받는 동안 몇 번 더 수행해야 할 수 있습니다.
— Zooba

10
또한 "Access Denied"문제는 Git Bash 버그입니다 (또는 Bash 포트를 유지 관리하는 사람 ... 누구인지 잘 모르겠습니다). 그리고 Store를 시작하는 것은 사람들이 Python을 설치하는 데 도움이되는 새로운 기능입니다. 일반 설치 프로그램을 사용하여 PATH에 추가 한 경우 새 리디렉터보다 우선해야하지만 그렇지 않은 경우 비활성화하는 방법을 위에서 발견했습니다.
— Zooba

5
이 문제를 해결하기 위해 두 번째 부분 만 수행해야했습니다.
— kennyB

6
나를 위해 git bash가 python을 찾기 위해 내 경로 (C : \ Users \ YourUsernameHere \ AppData \ Local \ Programs \ Python \ Python37)에 python을 추가해야했습니다
— Niels

2
내 경로에 추가하고 맨 위로 이동하는 것이 Neils와 마찬가지로 내 솔루션이었습니다. Windows 스토어 스텁의 스텁 이름을 바꿀 수 없다는 사실은 매우 성가신 일입니다.
— John W. Clark

26

연구

의 모든 %USERPROFILE%\AppData\Local\Microsoft\WindowsApps파일은 실제로 어딘가에있는 파일을 가리키는 자리 표시 자이며 C:\Program Files\WindowsApps권한이 완전히 거부됩니다.

이 문제를 복제하여 진술 한 내용이 올바른 방향으로 진행된 것 같습니다.

"그들은 배포 방법을 권한으로 망쳐 놓는 것에 대해 정말로 생각하지 않은 것 같습니다!"

출처 : Windows에서 Git Bash에 파일 린트를 설치할 수 없음 (Windows 스토어)

WindowsApps 배포 방법으로 인해 권한이 엉망이됩니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력 여기에 이미지 설명 입력 흥미롭게도 "Users"그룹은 특정 사용자뿐만 아니라 파일을 읽고 실행할 수 있지만 Administrators 그룹은 엄청나게 헤아릴 수없는 이유로 폴더 내용 만 나열 할 수 있습니다. 그리고 파일 탐색기에서 폴더에 액세스하려고 할 때 폴더 내용을 표시하는 것도 거부하므로 그에 대해 이상한 점이 있습니다.

흥미롭게도 pythonCMD에서 실행 해도 잘 작동 하지만 "WindowsApps"폴더가 상주하는 디렉터리에있는 파일을 나열 할 때 표시되지 않으며 폴더로 이동하려고하면 "Permission denied"오류가 발생합니다.

여기에 이미지 설명 입력

권한을 변경하려면 먼저 소유자를 변경해야하므로 소유자를 Administrators 그룹으로 변경했습니다. 그 후 관리자 그룹에 대한 권한을 모든 권한을 포함하도록 변경하려고 시도했지만 "액세스가 거부되었습니다"(마이크로 $ ucks, 변경하려고합니다!) 때문에이를 변경할 수 없습니다.

여기에 이미지 설명 입력

이 권한 오류는 너무 많은 파일에서 발생하여 Alt + C를 사용하여 반복 메시지에서 "계속"을 빠르게 클릭했지만 여전히 너무 오래 걸렸기 때문에 프로세스를 취소하여 다음 경고 메시지가 나타납니다.

여기에 이미지 설명 입력

이제 TrustedInstaller 사용자를 WindowsApps 폴더의 소유자로 다시 설정할 수 없습니다. 사용자 / 그룹 / 기본 제공 보안 원칙 / 기타 개체 목록에 표시되지 않기 때문입니다. *

여기에 이미지 설명 입력

* 실제로이 자습서 에 따라 NT Service\TrustedInstaller개체 이름 텍스트 상자 에 입력하여 소유자를 TrustedInstaller로 다시 바꿀 수 있습니다 .

해결책

해결책이 없습니다. 기본적으로 우리는 완전히 망가졌습니다. 품격있는 움직임, 마이크로 소프트.


12
(여기에 Microsoft 직원 및 CPython 핵심 개발자) 현재이 위치에서 실행 파일을 시작할 수 있지만 전역 별칭을 사용하도록 설정 한 경우에만 (앱 실행 별칭 관리에서) Windows에서 버그를 수정하고 있습니다. 현재 사용자를 위해 앱을 설치하기 만하면되도록 변경하려고합니다.
— Zooba

4
관리자 권한으로 실행되는 dllhost.exe 인스턴스 (보안 셸 확장, rshx32.dll 호스팅)가 소유하고 있으므로 "폴더 내용 나열"액세스 (예 : 실행, 동기화 및 읽기)가 있으므로이 대화 상자를 통해 권한을 읽을 수 있습니다. 데이터, 속성 및 권한). 사용자 그룹의 항목은 일반 액세스 확인을위한 것이 아닙니다. 이는 WIN : // SYSAPPID 보안 속성, 즉 모든 앱의 존재 여부를 조건으로합니다. 각 앱의 하위 폴더는 사용자에게 읽기 액세스 권한을 부여하지만 실행 액세스는 사용자 지정 액세스 토큰을 설정하는 앱 링크를 통해 실행될 때 조건부입니다.
— Eryk Sun

@ErykSun 그것은 내가 Windows 실행 및 권한에 대해 본 최초의 정보에 입각 한 답변입니다. 감사.
— Ryan

나는 실제로 폴더에 대한 권한을 변경하려는 시도로 인한 결과를 여전히 다루고 있습니다. 특정 WinApps는 다음 지침을 따를 때까지 모두 실행을 중지 했지만 ( superuser.com/questions/1288014/… ) 이제 실행시 오류 메시지를 표시합니다. 이전 Win10 USB 이미지를 사용했기 때문에 권한이 잘못 설정되었을 수 있습니다.
— 라이언

1
@MarkSimpson이 스레드가 도움이되어 기쁩니다. 내가 무엇을 썼는지 확실하지 않습니다. 여기 댓글에 실제 답변을 게시 한 Microsoft 직원에게 감사드립니다.
— 라이언


12

이 문제는 너무 흔해서 여전히 지속되지 않습니다. 그리고 대부분의 답변과 지침은이를 해결하지 못합니다. Windows 10에서 수행 할 작업은 다음과 같습니다.

  1. environment variables시작 검색 창에 입력 하고 시스템 환경 변수 편집을 엽니 다 .

  2. 환경 변수 ...를 클릭하십시오 .

  3. 시스템 변수 섹션에서 키로 변수를 찾아 Path두 번 클릭합니다.

  4. 파이썬 파일을 가리키는 경로를 찾으십시오. 아마 없을 것입니다. 있는 경우 선택하여 삭제하십시오.

  5. Python 실행 파일의 경로로 설정된 새 변수를 만듭니다. 일반적으로 이것은입니다 C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38. 파일 탐색기를 통해 확인하십시오.

    참고 : AppData가 보이지 않으면 숨겨진 항목보기를 활성화 하지 않았기 때문입니다 .보기 탭을 클릭하고 숨겨진 항목 확인란을 선택합니다.

  6. Scripts디렉토리를 가리키는 다른 변수를 만듭니다 . 일반적으로 C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts.

  7. 터미널 및 시도 입력을 다시 시작 py, python, python3, 또는 python.exe.


5

PowerShell의 솔루션은 아니지만 MINGW64를 제외하고는 동일한 문제가 발생했습니다. 일반적으로 VSCode에서 터미널로 Linux 용 Windows 하위 시스템 (어쨌든하고 싶었 음)으로 전환하여 문제를 해결했습니다. 이 게시물은 이에 대해 잘 설명합니다.

Ubuntu 앱을 터미널로 사용하도록 VS Code (Windows)를 구성하는 방법

요약하자면:

1) Windows App Store에서 Ubuntu 설치

2) CMD-> wslconfig / setdefault Ubuntu에서 기본 bash 변경

--- VSCode 용

3) VSCode 다시 시작

4) VSCode에서 "terminal.integrated.shell.windows"를 "C : \ WINDOWS \ System32 \ bash.exe"로 변경합니다 (자세한 내용은 위의 게시물 참조).

이제 VSCode 및 WSL (Windows의 Ubuntu에서 Bash)에서 원활하게 실행됩니다. 적어도 일시적인 해결책이 될 수 있습니다.


5

WindowsApps가 문제를 해결하기 전에 로컬 Python 경로를 추가했습니다.

환경 변수> 경로

Bash Python-버전


2

해결 방법 : exe에서 Python을 설치 한 경우 아래 단계를 따르십시오.

1 단계 : Python 제거

2 단계 : 아래 스크린 샷 (노란색)에 강조 표시된대로 Python을 설치하고 Python 경로 확인란을 선택합니다.

이것은 나에게 문제를 해결했습니다.

여기에 이미지 설명 입력


2

나를 위해 manage app execution aliasespython3이 명령이 아니라는 오류가 발생하여 py대신 사용 python3하고 작동했습니다.

왜 이런 일이 일어나는지 모르겠지만 그것은 나를 위해 일했습니다.


1

가장 간단한 방법은 PATH 및 PYTHONPATH 환경 변수를 수정하여 적절한 Python 바이너리가 포함 된 폴더가 로컬 WindowsApp 폴더에 대해 검색되도록하는 것입니다. 제어판을 열고 "env"를 검색하여 환경 변수에 액세스 할 수 있습니다.


1

이는 Windows 앱 실행 별칭 이 Git-Bash에서 작동 하는 방식 때문 입니다.

Windows 재분석 지점에 액세스하지 못하는 MSYS2 의 알려진 문제 입니다.IO_REPARSE_TAG_APPEXECLINK

해결 방법으로 내부 에서 사용하는 함수 호출에 별칭을 지정할 수 있습니다 cmd.exe.

~/.bashrc파일에 다음을 추가하십시오. :

function python { cmd.exe /c "python $1 $2 $3";}

파이썬의 경우 허용되는 답변에서와 같이 앱 실행 별칭을 토글하는 것이 좋지만. 같은 Windows 스토어를 통해 독점적으로 배포되는 라이브러리의 winget경우 이것이 최선의 선택입니다.

추가 읽기


0

동일한 문제가 발생했지만 Python이 차단되는 것 외에도 Scripts폴더의 모든 프로그램도 차단 되었습니다. 별칭, 경로에 대한 다른 답변은 winpty도움이되지 않았습니다.

마침내 어떤 이유로 든 컴파일 된 모든 파이썬 스크립트를 차단하기로 하룻밤 사이에 결정한 바이러스 백신 (Avast)이라는 사실을 마침내 발견했습니다.

다행히도 수정은 간단합니다. 전체 Python 디렉토리를 허용 목록에 추가하기 만하면됩니다. 자세한 설명 은 여기 를 참조 하십시오 .


-1

관리자 권한으로 명령 프롬프트를 열어 볼 수 있습니다. (관리자 권한으로 실행). 대부분의 경우 나를 위해 작동합니다.


3
Python 실행 파일은 관리자 권한 없이도 CMD에서 작동합니다. 문제는 이것이 프로그래머에게 필수적인 도구이고 기본값 인 Git Bash에서 작동하지 않는다는 것입니다. 그리고 이것은 Python을위한 다른 모든 배포 방법에서도 작동합니다. 즉, 여기서도 작동해야한다는 의미입니다.
— 라이언

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.