반응형

여러 버전의 python 을 설치하고 명령어 창에서 실행하고자 하는데 기본적인 명령어에서 차이가 났다. (본인은 아나콘다를 통한 3.7 버전(시스템 환경변수), 공식 사이트를 통한 3.10 버전(사용자 환경변수)의 충돌이 발생했다.) 이를 해결하는 방법을 아래에 적어둔다.

 

TL;DR

원인1. 환경변수 중 "path"의 경우에는, 시스템 환경변수 뒤에 사용자 환경변수가 붙어서 찾아준다.

원인2. 윈도우10부터 앱 실행 별칭 관리(App Execution~)로 파이썬이 실행되게끔 설정되어 있기 때문이다.

 

원인1 해결 방법

1. Anaconda3 환경변수들을 새로운 이름으로 하나하나 시스템 변수 중 path 가 아닌 곳에 추가하기

2. 다른 python들을 삭제 후 설치 공간을 user가 아닌 다른 곳에 설치하고 Anaconda3 환경변수보다 앞에 오도록 하기

3. Anaconda3를 삭제하고 재설치 후 path를 시스템 환경변수에 추가하지 않기

 

원인2 해결방법

앱 실행 별칭관리에서 python 관련 앱 설치 관리자를 모두 비활성화한다.

 

(참고) 환경변수 설정을 적용하려면 CMD 창을 재실행해야 한다.


아래는 상황설명이다.

 

먼저 "py -0p" 명령어를 이용하여 버전확인부터 해보자.

 

 

이렇게 설치된 버전들을 확인할 수 있다. 여기서 *(asterisk, star) 표시가 된 것은 기본 경로를 의미한다. 현재 기본 경로는 3.10으로 설정되어 있다.

 

그런데 python 명령어를 실행하면 3.7.11 버전이 실행된다.

 

 

원인은 아나콘다 설치 시 설치되는 파이썬을 시스템의 기본경로로 설정하였기 때문이다.

 

만악의 근원!!

아래는 시스템 환경변수이다.

아나콘다를 지우거나 우선순위를 변경해야 이를 해결할 수 있다.

아래는 사용자 환경변수이다.

 

그런데 이상하다. 분명 환경변수의 우선순위는 사용자 환경변수가 최우선이고 그 다음이 시스템 환경변수이다. 그리고 같은 환경변수 내에서도 위에서부터 찾아서 출력한다. 그런데 위에서 보다시피 시스템 환경변수에서 먼저 "python.exe" 를 찾아서 리턴해준다.

 

이유는 환경변수 중 "path"의 경우에는, 시스템 환경변수 뒤에 사용자 환경변수가 붙어서 찾아주기 때문이다.

 

출처: https://stackoverflow.com/questions/5126512/how-are-windows-environment-variables-evaluated

 

How are Windows Environment variables evaluated?

If I have a System and User environment variable with the same name, how are they processed? Are they concatenated? Does the user variable override the system variable? Taking that into account, if I

stackoverflow.com

https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/100843

 

Microsoft KB Archive/100843 - BetaArchive Wiki

Article ID: 100843 Article Last Modified on 2/20/2007 APPLIES TO Microsoft Windows 2000 Server Microsoft Windows 2000 Advanced Server Microsoft Windows 2000 Professional Edition Microsoft Windows NT Advanced Server 3.1 Microsoft Windows NT Server 4.0 Stand

www.betaarchive.com

이를 해결하기 위한 방법은 세 가지가 있다.

 

1. Anaconda3 환경변수들을 새로운 이름으로 하나하나 시스템 변수 중 path 가 아닌 곳에 추가하기

2. 다른 python들을 삭제 후 설치 공간을 user가 아닌 다른 곳에 설치하고 Anaconda3 환경변수보다 앞에 오도록 하기

3. Anaconda3를 삭제하고 재설치 후 path를 시스템 환경변수에 추가하지 않기

 

본인은 이중에서 3을 변형한 "Anaconda3를 삭제하기"로 하였다. 왜냐하면 지금 당장 아나콘다를 쓸 일이 없고 필요하다면 다음에 설치할 때 환경변수를 다시 설정해주면 되었기 때문이다.

 

안전제거를 위해 Everything을 이용하여 아나콘다 언인스톨 실행파일을 찾고 실행했다.

 

 

설치된 곳을 잘 찾고 삭제해준다.

 

잘 삭제해줘서 고맙고 당분간은 보지 말자..

 

이렇게 하면 아래와 같이 아나콘다 환경에 설치된 파이썬이 삭제된 것을 확인할 수 있다.

 

그래도 아직 위 빨간 박스가 남아 있다. 저것을 없애보자.

먼저 사용자 환경변수를 보자.

 

사용자 환경변수

 

이번에는 사용자 환경변수를 보니 분명히 Microsoft 보다 위에 있는데도 순서가 이상하게 나온다. 이럴 때는 시스템 환경변수도 확인해줘야 한다.

 

시스템 환경변수

 

시스템 환경변수를 보니 위 경로가 있다. 이것을 잠시 비활성화해두고 실행해보면

 

이렇게 순서가 바뀌어 나오는 것을 확인할 수 있다. (사용자 환경변수에서는 Programs 의 환경변수가 위에 있기 때문이다.)

 

그런데 그렇다고 기존의 경로를 시스템 환경변수에서 지울 수도 없다. 계속 사용해야 하기 때문이다.

이럴 때 앱 실행 별칭 관리에서 수정해주면 된다.

 

여기를 들어가는 방법은 간단하다. 설정에서 직접 찾거나 윈도우 키를 누르고 '앱 실행 별칭 관리' 또는 'app execution'을 검색하면 아래 화면이 나온다.

 

 

위 버튼을 클릭하면 아래와 같은 화면이 나오는데 여기서 python 관련 항목을 전부 비활성화하자.

다시 cmd 창을 실행시키고 명령어를 실행시키면 아래와 같이 제대로 나온 것을 확인할 수 있다.

 


이렇게 파이썬 환경변수와 관련한 기나긴 여정을 마쳤다. 가장 깔끔한 것은 모든 것을 지우고 처음부터 다시 설치하는 것이지만, 실제 환경에서 이렇게 하기도 어렵고 여러 파이썬 버전을 관리해야 할 때가 있을 것인데 그때를 대비하여 환경변수 관련 내용들을 제대로 파보았다. 비록 모든 옵션들은 보지 못했지만 여기서 얻은 인사이트들이 언젠가 도움이 될 것이라 생각한다.

 

이 글이 도움이 되었기를 바랍니다.

반응형

+ Recent posts