[Python] No module named 'pip' 고치기
새 pip version이 나왔다니 문제 예방 차원에서 upgrade를 해야지하고 pip install --upgrade 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.
새 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' 에러가 발생
문제의 원인
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에서 패키지를 불러올 수 없다는 의미.
해결방법
1. pip 을 복구하는 방법으로 pip 복구
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 명령들을 치면 잘 동작하는 것을 볼 수 있다.
다만, 이 경우. 지속적으로 새 버전이 있다는 메시지가 출력된다. 업그레이드를 해야한다.
2. 다른방법 - 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를 가져오기 때문에, 별도의 업그레이드 메시지가 뜨지 않는다.
3. 올바른 방법으로 pip 업그레이드 진행
재시도 전에, 관리자 권한을 제대로 쥐어주지 않는다면 아마 같은 No module named 'pip'에러가 발생할 것이다.
두가지 방식이 있는데,
1) 내장 pip복구 방법인 python -m ensurepip에 --upgrade를 추가하는 방법과
python -m ensurepip --upgrade
2)터미널 단에서 명령어를 입력하는 방법이 있다.
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으로 버전을 확인
No module named 'pip' 에러가 발생했을 때 고치는 방법을 알아보았습니다.
문제 해결에 도움주신 아래 블로거님께 감사드립니다.
출처 : https://velog.io/@lack12/Python-No-module-named-pip-%EA%B3%A0%EC%B9%98%EA%B8%B0