목차
개요
파이썬 버전 업데이트나 다중 파이썬 환경에서 일어날수 있는 오류중 하나로
올바른 pip과 venv의 버전일치 혹은 경로설정을 제대로 해주지 않아서 일어나는 오류
로컬에 pip을 특정 버전으로 설치하면 venv를 설치할 당시에 venv에 이용되는 python버전이 아니라 로컬의 pip 버전으로 설치되어 pip이 설치되지 않는다.
따라서 패키지 또한 설치되지 않는다.
오류 내역 및 오류 분석
Error: Command '['경로', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
이렇게 뜨는데
구글링 시에 첫페이지에 가보면 단순히 pip을 제외하고 설치하라고 알려주고
➡ pip의 버전 호환으로 일어난 문제이기에 에러메세지는 뜨지 않는다.
누군가 댓글로 패키지가 설치되지 않는다 pip이 인식되지 않는다 하였지만 답을 한 게시글이 있었다.
➡ 당연히 사람마다 패키지가 설치될수도 있다. pip과 venv 버전의 파이썬과 호환이 되는 패키지인 경우 vsCode나 pycharm 등 페이지에서 인터프리터는 venv로 잡혀있고 서버 실행시에는 로컬의 패키지로 실행하는 경우(vsCode 내에서는 노란 밑줄이 생기지만 작동은 된다)
하지만 나같은 경우 3.7에서 작업하던 프로젝트를 3.11로 버전업해서 새로 만드는 과정에서 pip 버전 업데이트와 DRF의 버전업이 있었기에 오류가 생성되었고 –without-pip 옵션으로 해결이 되지 않았었다.
자 그럼 해결해보자
오류 해결 방법 선택
venv의 파이썬버전과 pip을 같게 해주면 해결된다. ➡ 오직 하나의 python만 사용한다
➡ But, venv를 사용하는 것도 개별 pip을 사용하는 것도 프로젝트마다 다른 버전의 파이썬과 패키지를 이용하기 위함이니까 모순
특정 파이썬 버전을 명명하여 venv를 설치해준다.
➡ 이후에 venv 환경내에서 pip에 대한 upgrade를 실행하라고 친절하게 알려준다.
특정 파이썬 버전을 명명하여 venv를 설치
sudo apt-get install python3.10-venv
나는 3.10 버전의 venv가 필요하여서 해당 버전의 venv를 설치하였다.
지금 로컬에는 3.8의 .20 LTS 우분투 버전의 기본 파이썬과 기본 pip이 설치된 상태
sudo python3.10 -m venv venv
다음에는 원하는 파일의 디렉토리에서 python[버전] -m venv [가상머신 폴더 명] 을 해주었다.
또한 sudo를 사용하였는데 이는 파일 이동시나 실수로 삭제를 할때를 대비해서 sudo 를 해두었다.
당연히 삭제시에는 터미널에서 linux 형식의 명령을 통해 지워주어야한다.
밑에 코드는 지금하라는게 아니라 삭제시에 사용하는 명령어다.
sudo rm -rf [가상머신 이름]
가상머신 설치가 끝났으면 당연히 실행을 해보자
정상적으로 켜진것을 확인했다.
이후 pip으로 프로젝트에 필요한 패키지를 설치해보니
(requirement를 이용하여 설치하는게 더 좋다. 하지만 포스팅을 위해 개별 설치를 시도해봤다.)
pip 업그레이드가 떴다. 여기서 중요한건 pip이 존재하는 위치를 봐주자 가상환경 내의 python 이 잡힌것을 볼수 있다.
이전에 참고하였던 블로그의 댓글이 질문했던 which pip에 대한 경로도 확인해보자
가상환경 실행시에 가상환경 내의 pip이 설치됨을 확인 할 수 있다.
당연하지만 가상환경 해제시에는 로컬의 pip이 잡히는것을 확인할 수있다.
마무리
프로젝트 마무리에 바빠진것 같다. 블로그 포스팅도 여유가 생기면 쭉 해보겠다.
+ 에러해결에 구글링이 도움되는것은 맞지만 양산형 에러해결 포스팅이나 불확실한 정보는 필터링 할 수 있는 능력을 키우는것도 중요한것 같다.. 나같은 경우도 이 방법을 위해서 우분투를 두세번은 재설치 한것 같다.
'Python' 카테고리의 다른 글
pymysql로 MySQL과 Python 연결하기 on AmazonRDS (0) | 2023.04.11 |
---|---|
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '~/env/bin/pip'Check the permissions. (0) | 2023.01.03 |
[Error] Unindent amount does not match previous indent 해결법 (0) | 2022.09.25 |
*args, **kwargs (0) | 2022.08.28 |
map() (0) | 2022.07.31 |