본문 바로가기
C.W.K.
Stream
Lesson 01 of 05 · published

pip이 보편적이면서 답답한 이유

~11 min · pip, overview, python

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

pip은 Python의 공식 기본 패키지 설치 도구로 모든 Python 3.4 이상에 함께 제공돼. 500,000개가 넘는 패키지를 가진 PyPI와 통신하지. 모든 Python 안내서가 pip을 전제로 하고 requirements.txt도 pip이 읽으며, uv·Poetry·pixi 같은 새 도구도 결국 pip 생태계와 호환돼. Python에서는 pip을 피할 수 없으니 제대로 익히는 수밖에 없어.

답답한 점도 잘 알려져 있어. 기본 lockfile이 없어서 requirements.txt는 선택적인 버전 제약을 가진 평평한 목록일 뿐, 전이 의존성 전체를 고정하지 못해. 큰 과학 Python 프로젝트는 설치에 몇 분이 걸릴 만큼 느리고, 여러 Python 버전을 관리하려면 pyenv 같은 도구가 따로 필요해. 패키지를 제거해도 전이 의존성이 남는 지저분한 제거 문제도 있고, npx처럼 전역 도구를 격리해 실행하려면 pipx가 별도로 필요해.

그래서 현대 Python 개발에서는 pip, venv, pip-tools 또는 pip-compile, pyenv, pipx를 함께 쓰곤 해. 다음 트랙의 uv는 이 다섯 도구를 Rust 실행 파일 하나로 대체하면서 10~100배 빠르게 동작해. 그래도 uv가 아직 지원하지 않는 도구를 설치할 때는 다시 pip을 만나게 되므로, 주 도구를 uv로 바꾸더라도 pip부터 알아야 해.

Code

pip이 맡는 일과 맡지 않는 일·text
  pip 가 함                              pip 가 안 함
  -----------                            ----------------
  PyPI 에서 install                      Python 버전 관리 (pyenv 사용)
  requirements.txt 읽기                  진짜 lockfile 생성 (pip-tools 사용)
  Editable install (-e)                  install 없이 도구 실행 (pipx 사용)
  의존성 resolve                         Transitive deps 깨끗하게 uninstall
  로컬 wheel/sdist install               프로젝트 별 환경 (venv 사용)
  Index-url override                     빌드 환경 (venv + invocation)

  모던 stack:  pip + venv + pip-tools + pyenv + pipx
  또는 그냥:    uv  (다음 트랙)

External links

Exercise

'pip --version'과 'python3 --version'을 실행해. Python이 없다면 Homebrew로 설치해('brew install python@3.13'). Python과 pip 버전, 그리고 'which python3', 'which pip3'로 각각의 위치를 적어. 경로를 보면 현재 어느 Python을 쓰는지 알 수 있으며 하나 이상일 수도 있어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.