pip
python3-pip
혹은 버전에 맞는 pip
를 설치해서 써야하는 python 패키지 관리자로 python package를 관리하기엔 필수적으로 사용하는데, python을 거의 처음 사용하다보면 이게 쉽지가 않다.
venv, uv, PYTHONPATH
Python 이라는게 불리는 PYTHONPATH
를 기준으로 (없으면 default 경로로) bin
/ lib
등등을 찾아가기 때문에, PYTHONPATH
만 별도로 지정이 되면 Python 환경에서 속히 말하는 가상화
가 된다.
그걸 이용해서 venv 패키지는 원하는 경로에 venv 폴더를 만들어 각 Task마다 별도의 venv환경을 만들어 꾸밀 수가 있다.
uv는 Rust로 pip를 재구현하여 pip와 실제 구현은 다르다. 하지만 동작은 pip의 동작과 동일하다. uv를 통해서 venv 환경에 접근도 가능하다.
주의... 알면서도...
문제는 pip는 Python을 쓰려면 필수인데, venv로 쓰는 패키지가 있고 uv를 사용하는 패키지도 있고, Host에 깔린 패키지도 있다.
자신이 pip로 패키지를 확인할때는 반드시 주의 해야 한다.
알면서도... 알면서도... 자꾸 뻘짓을 하게 된다.
아래의 세개는 다르다.
pip
$ pip list
이건 Host에 python3-pip를 설치하고 해당 pip가 우선적으로 되어 있을 경우 설치된 python3-pip 패키지의 pip를 사용하는 것이다.
venv를 사용하는 환경이면 venv activate된 path를 바라보게 되어 python3, lib 모두 해당 경로를 참조하는 경우에도,
Host의 pip 명령어를 치면 activate된 venv경로가 아닌 default로 /usr/bin/pip
를 호출하게 되고 이 pip는 바라보는 lib의 path를 venv환경이 아닌 host의 환경을 바라보게 된다.
python3 -m pip
$ python3 -m pip list
이 명령어는 venv가 활성화된 ${PYTHONPATH}/lib
의 Python package list를 보여준다.
기본적으로 python3-pip
패키지의 pip 바이너리를 직접적으로 호출하는게 아닌 Python3 pip
모듈을 호출하는 것이기 때문에 python3
바이너리를 호출하고, 이 python3
바이너리는 venv
환경이든 uv
환경이든(uv환경도 venv환경과 동일한 영향을 받으므로 venv환경과 동일하겠지만) PATH가 잡힌곳의 python3를 호출하므로 더 안전하다.
uv pip list
$ uv pip list
uv환경을 쓸 경우 이 방법도 PYTHONPATH의 lib에 있는 package를 바라보게 되기 때문에 venv환경의 영향을 받는다.
패키지 확인 전에...
- venv환경을 써야 되는 경우가 있다면, 그냥
python3-pip
패키지를 지울 수 있다면 지워버리자. - 무조건
$ python3 -m pip
로 명령어를 습관화 하자. - 그렇더라도 중요한 실행 전에는 그냥 아래 세개 명령어 다 때려넣어서 세개중 하나라도 다르다면 지금 pip 호출되는 애들이 다르다는 것이니 주의 해야 한다는 생각을 하자
$ pip list $ python3 -m pip list $ uv pip list
파이썬...
하..역시 스크립트는 나랑 안맞아...
'개발, 웹, 블로그 > Linux 상식' 카테고리의 다른 글
[git] 현재 경로 이하의 모든 submodule 경로를 safe.directory 등록 방법 (0) | 2025.05.12 |
---|---|
[tmux] tmux 사용시 스크롤이 안되는 현상 및 활성화 방법 (0) | 2025.04.15 |
tmux 간단 사용 방법 (0) | 2025.02.05 |