여러 버전의 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
https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/100843
이를 해결하기 위한 방법은 세 가지가 있다.
1. Anaconda3 환경변수들을 새로운 이름으로 하나하나 시스템 변수 중 path 가 아닌 곳에 추가하기
2. 다른 python들을 삭제 후 설치 공간을 user가 아닌 다른 곳에 설치하고 Anaconda3 환경변수보다 앞에 오도록 하기
3. Anaconda3를 삭제하고 재설치 후 path를 시스템 환경변수에 추가하지 않기
본인은 이중에서 3을 변형한 "Anaconda3를 삭제하기"로 하였다. 왜냐하면 지금 당장 아나콘다를 쓸 일이 없고 필요하다면 다음에 설치할 때 환경변수를 다시 설정해주면 되었기 때문이다.
안전제거를 위해 Everything을 이용하여 아나콘다 언인스톨 실행파일을 찾고 실행했다.
설치된 곳을 잘 찾고 삭제해준다.
이렇게 하면 아래와 같이 아나콘다 환경에 설치된 파이썬이 삭제된 것을 확인할 수 있다.
그래도 아직 위 빨간 박스가 남아 있다. 저것을 없애보자.
먼저 사용자 환경변수를 보자.
이번에는 사용자 환경변수를 보니 분명히 Microsoft 보다 위에 있는데도 순서가 이상하게 나온다. 이럴 때는 시스템 환경변수도 확인해줘야 한다.
시스템 환경변수를 보니 위 경로가 있다. 이것을 잠시 비활성화해두고 실행해보면
이렇게 순서가 바뀌어 나오는 것을 확인할 수 있다. (사용자 환경변수에서는 Programs 의 환경변수가 위에 있기 때문이다.)
그런데 그렇다고 기존의 경로를 시스템 환경변수에서 지울 수도 없다. 계속 사용해야 하기 때문이다.
이럴 때 앱 실행 별칭 관리에서 수정해주면 된다.
여기를 들어가는 방법은 간단하다. 설정에서 직접 찾거나 윈도우 키를 누르고 '앱 실행 별칭 관리' 또는 'app execution'을 검색하면 아래 화면이 나온다.
위 버튼을 클릭하면 아래와 같은 화면이 나오는데 여기서 python 관련 항목을 전부 비활성화하자.
다시 cmd 창을 실행시키고 명령어를 실행시키면 아래와 같이 제대로 나온 것을 확인할 수 있다.
이렇게 파이썬 환경변수와 관련한 기나긴 여정을 마쳤다. 가장 깔끔한 것은 모든 것을 지우고 처음부터 다시 설치하는 것이지만, 실제 환경에서 이렇게 하기도 어렵고 여러 파이썬 버전을 관리해야 할 때가 있을 것인데 그때를 대비하여 환경변수 관련 내용들을 제대로 파보았다. 비록 모든 옵션들은 보지 못했지만 여기서 얻은 인사이트들이 언젠가 도움이 될 것이라 생각한다.
이 글이 도움이 되었기를 바랍니다.
'CS > Python' 카테고리의 다른 글
[Jupyter] Jupyter server process failed to start illegal char at index 해결 방법 (0) | 2022.07.27 |
---|---|
[Jupyter] 주피터 노트북 원격 실행하기 (0) | 2022.07.27 |
[Python] pipenv 를 user 환경에 설치하고 확인하는 법 (1) | 2022.03.04 |
[Python] 파이썬 여러 버전 설치하고 설치된 버전 확인하는 방법 (1) | 2022.03.03 |
[Pycharm] 파이참 프로젝트 실행하는 법(환경(Configuration) 설정) (0) | 2021.05.18 |