공부하는 것처럼 원인이 무엇이고, 결과가 어떻게 되었는가를 다 기록하는 글입니다. 해결방법만 보고 싶으신 분은 '해결과정' 헤더를 확인해주세요.
방금전까지도 pip install ~
으로 모듈을 잘 설치하던 pip
가 갑자기 No module named 'pip'
라며 메시지와 함께 동작하지 않았다.
pip install ~
로 모듈을 설치하고 나니 아래와 같은 알림 메시지를 보았다.
WARNING: You are using pip version 22.0.4; however, version 22.1 is available.
You should consider upgrading via the '~\venv\Scripts\python.exe -m pip install --upgrade pip' command.
내 현재 버전은 22.0.4이고, 22.1버전이 나왔다고 한다. 현재 사용하는데 지장은 없지만, 새 pip version이 나왔다니 앞으로 어떤 모듈이 필요할지는 모르니까 문제 예방 차원에서 upgrade를 해야지하고
pip install --upgrade pip
를 터미널에 업그레이드 요청을 했다.
ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다: '~\venv\scripts\pip.exe'
Check the permissions.
엑세스 거부 메시지, 권한을 확인해주세요 라는 메시지와 함께 설치가 실패했다고 한다.
'잉? 뭐지?' 라는 생각과 함께 다시 업그레이드를 요청하니 No module named 'pip'
에러가 발생하기 시작했다.
일단 멘탈에 살짝 금이 갔지만, 어쨌든 해결을 해야할 노릇. 에러메시지를 보면 그 원인이 나온다는 말에 입각하여 천천히 메시지를 보기 시작했다.
[가설 1] 일단, '엑세스 거부'라는 말은 파일 생성 권한이 없다는 뜻일테고, 윈도우 사용자인 나로써는 관리자 권한을 주지 않았다는 뜻?
: [답변 1] 터미널을 분명히 관리자 권한으로 켰고, 혹시나 내가 착각하고 있나 해서 설정도 확인했지만 관리자 권한으로 실행
이 체크 되어 있다.
[가설 2]No module named 'pip'
는 pip
라는 모듈이 없다는 것일테니, pip
파일이 삭제되었거나, 이동되었다는 의미인가?
: [답변 2] 가끔 백신프로그램에서 파일 변경을 하는 exe 파일을 바이러스로 오해하는 경우가 있으니 검역소를 확인해 보았지만 관련이 없었고, \venv\scripts\
에 pip.exe
가 버젓이 살아있음을 확인
'둘 다 아닌데?' 라는 결과에 다시 에러 메시지의 주변을 보았다.
Found existing installation: pip 22.0.4
Uninstalling pip-22.0.4:
ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다: '~~\venv\scripts\pip.exe'
Check the permissions.
...
File "~\venv\Scripts\pip.exe__main__.py", line 4, in module
ModuleNotFoundError: No module named 'pip'
에러 메시지 바로 위쪽의 Uninstalling pip-22.0.4
와 pip.exe\__main__.py
에서 보듯이, pip
패키지를 지웠고, 파일 생성에 실패하면서 pip
패키지를 다시 만들지 못해 pip.exe
에서 패키지를 불러올 수 없다는 의미였다.
원인은 찾았고.. 이제 해결을 해야한다.
pip
는 내가 건너뛰지 않는 이상 Python
설치와 함께 설치되는 패키지니까 Python
을 재설치 해야하나 싶었다. pip
패키지가 없는 곳이 venv
, 가상환경이니까, 가상환경을 다시 잡아야 하려나 싶었지만 다행스럽게도 pip만 재설치하는 방법이 있었다.
python -m ensurepip
ensurepip
는 Python
설치시 기본으로 내장되어 있던 pip
를 복구하는 명령어다.
Installing collected packages: pip
Successfully installed pip-22.0.4
명령 실행후 위와 같은 메시지가 나온다면 성공이다. 기존버전이였던 22.0.4 를 복구하였고, pip list
나 pip --version
등 pip
명령들을 치면 잘 동작하는 것을 볼 수 있다.
다만, 이 경우. 지속적으로 새 버전이 있다는 메시지가 출력된다. 업그레이드를 해야한다.
:: 다른방법 - PyPA를 사용하여 재설치
PyPA, Python Packaging Authority 사이트가 있다.Python
패키징에 사용되는 프로젝트 묶음을 유지/관리하는 그룹이라고 한다.우선
curl
을 이용하여 스크립트,get-pip.py
를 다운 받아야 한다.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
다운이 완료되었으면 get-pip.py를 실행시켜 설치를 할 수 있다.
python get-pip.py
이렇게 재설치 하는경우, 가장 최신버전으로 pip를 가져오기 때문에, 별도의 업그레이드 메시지가 뜨지 않는다.
재시도 전에, 관리자 권한을 제대로 쥐어주지 않는다면 아마 같은
No module named 'pip'
에러가 발생할 것이다.
두가지 방식이 있는데, 내장 pip
복구 방법인 python -m ensurepip
에 --upgrade
를 추가하는 방법과
python -m ensurepip --upgrade
터미널 단에서 명령어를 입력하는 방법이 있다.
python -m pip install --upgrade pip
업그레이드를 완료하면 아래와 같은 메시지가 출력될 것이다.
Found existing installation: pip 22.0.4
Uninstalling pip-22.0.4:
Successfully uninstalled pip-22.0.4 # 현재버전
Successfully installed pip-22.1 # 신규버전
pip list
혹은 pip --version
으로 버전을 확인하면, 훌륭하게 업그레이드가 되어 있을 것이다.
pip Istallation, PyPA Documentation: pip 재설치 문서
Blog- no module named 'pip' 에러
Vanxy- 잘 되던 pip install ~이 안될때 해결방법
도롱뇽 BLOG- 잘 되던 pip가 안될때 (No module named ‘pip’)
Tonic - No module named 'pip' 에러와 함께 pip가 갑자기 안되는 경우
감사합니다.