[Python] No module named 'pip' 고치기

ElyaSetinal·2022년 5월 14일
4

주의

공부하는 것처럼 원인이 무엇이고, 결과가 어떻게 되었는가를 다 기록하는 글입니다. 해결방법만 보고 싶으신 분은 '해결과정' 헤더를 확인해주세요.


문제 발생

방금전까지도 pip install ~ 으로 모듈을 잘 설치하던 pip가 갑자기 No module named 'pip'라며 메시지와 함께 동작하지 않았다.


발생전에 무엇을 하였는가

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.4pip.exe\__main__.py에서 보듯이, pip패키지를 지웠고, 파일 생성에 실패하면서 pip패키지를 다시 만들지 못해 pip.exe에서 패키지를 불러올 수 없다는 의미였다.

원인은 찾았고.. 이제 해결을 해야한다.


해결과정

pip 재설치

pip는 내가 건너뛰지 않는 이상 Python 설치와 함께 설치되는 패키지니까 Python을 재설치 해야하나 싶었다. pip패키지가 없는 곳이 venv, 가상환경이니까, 가상환경을 다시 잡아야 하려나 싶었지만 다행스럽게도 pip만 재설치하는 방법이 있었다.

python -m ensurepip

ensurepipPython설치시 기본으로 내장되어 있던 pip를 복구하는 명령어다.

Installing collected packages: pip
Successfully installed pip-22.0.4

명령 실행후 위와 같은 메시지가 나온다면 성공이다. 기존버전이였던 22.0.4 를 복구하였고, pip listpip --versionpip 명령들을 치면 잘 동작하는 것을 볼 수 있다.
다만, 이 경우. 지속적으로 새 버전이 있다는 메시지가 출력된다. 업그레이드를 해야한다.

:: 다른방법 - 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를 가져오기 때문에, 별도의 업그레이드 메시지가 뜨지 않는다.

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으로 버전을 확인하면, 훌륭하게 업그레이드가 되어 있을 것이다.

Reference

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가 갑자기 안되는 경우

profile
꿈을 꾸는 하나의 인생

3개의 댓글

comment-user-thumbnail
2023년 4월 5일

감사합니다.

답글 달기
comment-user-thumbnail
2023년 5월 14일

덕분에 문제 해결 했어요 감사합니다!

답글 달기
comment-user-thumbnail
2023년 12월 27일

덕분에 해결됐습니다. 감사합니다 ♡

답글 달기