4개 개념이 pip 기반 Python 개발의 대부분 carry. 각각 깨끗이 알면 '그냥 pip install 돌리고 희망' 하는 사람이랑 너랑 구분됨.
Virtual environments (venv). 자기 Python 인터프리터 복사본과 자기 site-packages 가진 디렉토리. 활성화하면 shell PATH 조정해서 python 과 pip 이 venv 안에서 resolve. 비활성화하면 PATH 복원. 각 프로젝트가 자기 venv 받음; 사이에 leak 없음. .venv 디렉토리는 gitignore 해야 (항상 재생성 가능).
requirements.txt. 패키지 listing 하는 flat 텍스트 파일, 옵션 버전 제약 가능 (requests==2.31.0, flask>=3.0). pip 이 pip install -r requirements.txt 로 읽음. 결정적으로 requirements.txt 가 진짜 lockfile 아님 — transitive dep 버전이나 콘텐츠 hash 캡처 안 함. 진짜 재현성엔 pip-tools (작은 requirements.in 에서 fully-pinned requirements.txt 생성) 또는 uv 의 uv.lock 으로 전환 필요.
Editable installs (pip install -e .). Python 패키지 개발할 때 소스 코드 변경이 즉시 반영되길 원해 — 매 save 마다 reinstall 안 함. pip install -e . 가 패키지를 venv 의 site-packages 에 symlink 등가물로 install. 모든 Python 라이브러리가 이렇게 개발됨.
한계. 진짜 프로젝트 무는 pip 한계 셋: Python 버전 관리 없음 (multiple Python 버전 install 에 pyenv 필요); 느린 install (pip 이 직렬로 resolve + 다운; uv 가 parallel); dirty uninstall (패키지 uninstall 하면 deps 남음 — 시간 지나며 누적). pip 의 디자인이 그냥 이거 안 다룸.