몰입하는 개발자

An immersive developer/researcher

개발자 김모립/Python

파이썬 가상환경

jiankimr 2023. 5. 14. 02:01

https://www.youtube.com/watch?v=o_vKT80BBkw 

내가 겪은 오류

https://oyeahhh.tistory.com/170

 

[PowerShell] Error: 이 시스템에서 스크립트를 실행할 수 없으므로 ...

발생 예전부터 VS Code의 powershell에서 스크립트 실행시 동작하지 않았다. 그냥 저냥 Git Bash를 사용하며 어떻게 다른 방법으로 해결하고 지나갔는데 eslint --init을 진행할 수 없어서 (git bash 는 대화

oyeahhh.tistory.com

아래 하늘색 부분에 뭐라고 쓸지 찾기 위해 아래 포스팅을 참고함.

https://m.blog.naver.com/vanstraat/221732533202

 

Powershell 파워쉘 실행정책 - Execution Policy

파워쉘을 사용하다보면 외부에서 가져온 스크립트를 실행할 때 아래와 같은 오류를 경험하곤 합니다. 이 시...

blog.naver.com

아래는 발췌.


그럼 ExecutionPolicy가 가질 수 있는 5개(Undefined까지 총 6개)의 값이 어떤 의미인지 살펴보겠습니다.

Undefined

ExecutionPolicy를 설정하지 않았다는 의미이며, 기본 정책인 "Restricted"로 작동합니다.

Restricted

Windows 10의 ExecutionPolicy 기본 값이며, 이 경우 스크립트(~.ps1) 파일이 실행되지 않습니다. 단, Microsoft에서 만든 일부 스크립트 파일들은 실행이 가능하기도 한데, Microsoft에서 서명된 것이기 때문이 아닐까 합니다.

Unrestricted

이 설정은 Microsoft에서도 권장하지 않는 옵션인데, 모든 스크립트(서명되지 않은 스크립트 포함)를 실행할 수 있습니다. 악성코드를 실행시킬 수도 있기 때문에 왠만하면 사용하지 않는 것이 좋을 듯 합니다.

AllSigned

신뢰할 수 있는 인증기관이 서명한 스크립만 실행하는 옵션으로 보안이 가장 높지만, 해당 컴퓨터에서 작성된 스크립트라 하더라도 신뢰할 수 있는 인증기관이 서명하지 않았다면 실행이 불가능합니다.

Bypass

이 값은 다른 어플리케이션 내에 파워쉘 스크립트가 내장되거나, 별도의 자체 보안 설정을 갖추었을때 사용하기 위해 만들어졌으며, 차단되거나 별다른 경고 없이 실행됩니다.

RemoteSigned

이 값은 최신 Windows Server 버전(Windows Server 2012 R2 이후)의 Powershell 실행정책 기본값입니다.

해당 로컬 컴퓨터에서 에서 작성된 모든 스크립트는 실행이 가능하며, 인터넷에서 다운로드(IE, 크롬, 파이어폭스, 아웃룩 등)한 스크립트는 인증기관이 발행한 코드로 서명되어야만 실행이 가능합니다. 인터넷 이외의 소스로부터 다운로드 받거나 서명은 되었지만 악의적인 목적이 있는 스크립트는 위험이 있을 수도 있습니다.

Microsoft Windows PowerShell 팀에서 권장할 만큼 가장 많이 설정되는 값이며, 보안과 편리함의 균형을 어느정도 확보할 수 있습니담. 하지만 스크립트가 반드시 실행되어야 하는 컴퓨터에서만 사용하는 것이 바람직합니다.

위의 6가지 실행정책 값을 잘 읽어보셨다면 느끼셨을지도 모르지겠지만, ExecutionPolicy는 완벽한 보안이 될 수는 없다고 생각합니다. 그래서 일부 전문가분들은 자체적으로 보안에 더 신경을 쓰도록 Unrestricted로 설정할 것을 추천하기도 합니다. 보안을 생각한다면 ExecutionPolicy에만 의존하지 말아야 하겠습니다.


정리 :

(1) powershell에서 .\myvenv\Scripts\activate 하려는데 오류뜸. <-오류라기보단 권한 문

(2) Get-ExecutionPolicy하니 Restricted라고 뜸.

(3) Set-ExecutionPolicy RemoteSigned라고 하니  현재 사용자에 대한 실행 정책을 변경하려면 "Set-ExecutionPolicy -Scope CurrentUser"를 실행하십시오.라고 뜸.

(4) Set-ExecutionPolicy -Scope CurrentUser라고 하니

cmdlet Set-ExecutionPolicy(명령 파이프라인 위치 1)
다음 매개 변수에 대한 값을 제공하십시오.
ExecutionPolicy: 라고 뜸.

 

(5) 포스팅 참고해서 RemoteSigned라고 함.

 

결과.

하려던 것이 이제 잘됨. 굿.

 

또다른 방법

파워쉘을 '관리자(권한)으로 실행'으로 열고 위와 같이 입력해준다.

당연하지만 Y입력하고 엔터치기.

 

그리고 원하는 것들 pip 한 다음에, (그래도 바로 쓰려고 하면 쓰려는 패키지에 밑줄 쳐져 있을 거임.) ]아래처럼 가상환경을 선택해주면 된다. 그럼 밑줄 사라진다.