2월 19, 2019

파워쉘에서 파이썬 venv activate 스크립트 실행하기.

TL;TD

윈도우 파워쉘에서 디지털 서명되지 않은 스크립트 문제로 파이썬의 venv를 활성화 할 수 없을 때...

  1. 파워쉘에 Get-ExecutionPolicy -List 명령을 입력하여 현재 시스템의 스크립트 실행 설정 확인
  2. CurrentUser에  RESTRICTED , ALLSIGNED 로 표시되는 경우 REMOTESIGNED 로 설정한다.
  3. 파워쉘 에 Set-ExecutionPolicy -ExecutionPolicy REMOTESIGNED -Scope CurrentUser 입력한다.
  4. .\venv\Scripts\activate 스크립트를 실행한다.

1. 프로그램 실행환경

  • 파이썬 3.7.1
  • 윈도우 10 1809 (OS Build 17763.316)

2. 에러 상황

윈도우에서 파이썬의 venv 모듈을 이용해서 격리환경을 만든 후 활성화를 위해 activate 스크립트를 실행하려는데 작동하지 않았다. (이전엔 동작했던 것 같았는데..)

파워쉘에서 .\venv\Scripts\activate 명령을 입력했는데 아래의 에러 메시지가 출력되었다.

.\venv\Scripts\activate : File E:\..(경로)..\venv\Scripts\Activate.ps1 cannot be loaded. The file
E:\..(경로)..\venv\Scripts\Activate.ps1 is not digitally signed. You cannot run this script on the current
system. For more information about running scripts and setting execution policy, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

윈도우 정책으로 스크립트가 실행되는걸 막아 놓았다고 한다.

3. 문제 해결

다행이도 파워쉘은 친절하게 문제 해결에 참고하라고 링크를 주어서 문제해결에 도움이 되었다.

https:/go.microsoft.com/fwlink/?LinkID=135170

우선 파워쉘에 Get-ExecutionPolicy -List 명령을 입력하니 다음과 같은 화면을 볼 수 있었다.

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

스크립트 실행 권한으로는 RESTRICTED, ALLSIGNED, REMOTESIGNED, UNRESTRICTED, BYPASS, UNDEFINED 이 있다.

UNDEFINED로 설정된 경우에는 기본 정책인 RESTRICTED 로 개별 명령은 허용되지만 스크립트는 실행하지 않는다. 그리고 앞서 나열한 순서대로 스크립트 실행이 제한되어 시스템 위협으로부터 안전할 수 있다.

그래서 보안에 나은 순서대로 권한을 변경했을 때 activate스크립트를 실행할 수 있는 권한은 REMOTESIGNED이었고, 설정을 위해 다음 명령을 입력하고 Set-ExecutionPolicy -ExecutionPolicy REMOTESIGNED -Scope CurrentUser 시스템에 확인을 물어오면 Y  입력해서 설정을 완료한다.

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y