pip 명령어가 작동되지 않았던 문제..
PS C:\PROJECT\modelTest\python_lib_study\keyword_test> pip list
를 실행했을 때 다음과 같은 에러가 발생했다:
Fatal error in launcher: Unable to create process using '"C:\PROJECT\??????\S12\???\keyword_test\venv\Scripts\python.exe"
"C:\SSAFY_PROJECT\modelTest\python_lib_study\keyword_test\venv\Scripts\pip.exe" list': ??? ??? ?? ? ????.
설치된 패키지 목록을 보려고 pip list
를 했더니 에러가 났다.
알아보니, 특수문자나 한글이 경로에 섞여 있으면 pip 실행이 깨질 수 있다는 말이 있다.
그런데 이상하다.
특수문자 문제라면 keyword_test
도 깨져야 하는데 멀쩡하고,
프로젝트 경로에 한글도 없다.
pip
명령어가 어떻게 실행되고 있는지 확인했다.
터미널에 아래 명령어 입력:
where pip
그런데 결과가 나오지 않았다.
즉, pip
명령어가 현재 PATH에 등록되지 않은 상태라는 의미다.
그런데 어제까지만 해도 pip
명령어는 잘 작동했다.
왜 오늘 안 되는 걸까?
이제 Python 버전이 2개 설치된 상태가 된 것.
이때부터 pip 내부적으로 어떤 파이썬에 연결돼야 할지 경로가 꼬인 것이다.
즉, pip list
를 했을 때 어떤 파이썬의 pip인지 시스템이 제대로 판단하지 못하는 상태였다.
이 문제를 해결한 명령어는 다음과 같다:
python -m pip list
이 명령어는 현재 실행 중인 python
명령어에 연결된 pip
모듈을 사용하는 방식이다.
예를 들어, 현재 환경에서 아래 명령어로 버전을 확인해보자.
python --version
출력 결과:
Python 3.13.2
이 상태에서 python -m pip list
를 실행하면
Python 3.13에 연결된 pip가 정확히 실행된다.
경로가 꼬이지 않는다.
파이썬 버전이 여러 개 설치되어 있는 경우,
pip
명령어를 직접 사용하는 것보다 python -m pip
형식으로 실행하는 것이 안전하다.
또한, 블로그에는 기록하지 못했지만 python내에서 가상환경을 만들어 사용할 때에도 이 방식은 적용된다.
가상환경 내에서 패키지를 설치하려고 해도 pip install
을 하면 전역에 설치될 수 있다.
가상환경 속에 있다고 하더라도 안전하게 python -m pip install
을 해야 한다.
이를 몰라서 진짜 진짜 많이 헤맸다.. 아니 왜 설치해도 가상환경 안에 설치가 안 되어 있냐고..
상황 | 추천 명령어 |
---|---|
파이썬 버전 여러 개 있을 때 | python -m pip install ... |
특정 버전 pip를 쓰고 싶을 때 | py -3.10 -m pip list , py -3.13 -m pip install ... |
pip 오류가 날 때 기본 확인 | where pip python -m pip --version |