프로그래밍/Python

[Python] VS Code 이용 중에 "PSSecurityException" 보안 오류 해결 방법

채윤아빠 2021. 11. 24. 20:15
728x90
반응형

문제점 및 증상

VS Code를 이용하여 Python 개발중에 venv를 이용한 가상환경을 설정하여 잘 이용하고 있었습니다.
어느 날부터 보안 관련 설정이 변경되었는지, 다음과 같은 오류가 발생하며 가상환경을 이용할 수가 없었습니다.

PS D:\Dev\python\scc\server> & d:/Dev/python/venv/scc/Scripts/Activate.ps1
& : 이 시스템에서 스크립트를 실행할 수 없으므로 D:\Dev\python\venv\scc\Scripts\
Activate.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(
https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.
위치 줄:1 문자:3
+ & d:/Dev/python/venv/scc/Scripts/Activate.ps1
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

위와 같은 오류가 발생하였을 때의 해결 방법을 정리하여 둡니다.

해결 방법

실행 정책 확인

보안 오류의 해결을 위하여 먼저 현재 보안 실행 정책을 PowerShell의 "Get-ExecutionPolicy" 명령을 이용하여 다음과 같이 확인합니다.

PS C:\WINDOWS\system32> Get-ExecutionPolicy
Restricted

실행 정책이 "Restricted"로 제한된 경우, 위와 같이 권한이 없어서 실행이 안된다는 오류가 발생하게 됩니다.

다음은 현재 세션에 영향을 주는 모든 실행 정책을 가져오고 우선 순위에 따라 표시한 결과입니다.

PS C:\WINDOWS\system32> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

실행 정책 변경

정상적으로 가상환경을 이용하기 위해서는 다음과 같이 "Set-ExecutionPolicy" 명령을 이용하여 스크립트에 대한 실행 정책을 활성화해 주어야만 합니다.

Windows Vista 이상 버전의 Windows에서 로컬 컴퓨터 LocalMachine 범위에 대 한 실행 정책을 변경 하는 명령을 실행 하려면 관리자 권한으로 실행 옵션을 사용 하 여 PowerShell을 시작 합니다.

PS C:\WINDOWS\system32> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine

실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): y

변경된 실행 정책을 확인하면 다음과 같습니다.

PS C:\WINDOWS\system32> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    Unrestricted

위와 같이 실행 정책을 적용한 이후에는 VS Code에서 venv를 이용한 가상환경을 이용하는데 아무런 문제가 없었습니다.