일반적인 pip 사용에서 가장 중요한 습관은 패키지를 전역 설치하지 않는 것이야. 프로젝트마다 virtual environment(venv)를 만들어 그 안에서 작업해. 자주 쓰는 흐름은 venv 생성과 활성화, 설치, freeze, 실행으로 이어져.
python3 -m venv .venv는 .venv 디렉터리에 virtual environment를 만들어. source .venv/bin/activate로 활성화하면 셸 프롬프트에 (.venv)가 붙고 which python도 venv 안의 실행 파일을 가리켜. 끝낼 때는 deactivate를 실행해.
venv 안에서 pip install <pkg>을 실행하면 패키지가 이 환경에만 설치돼. pip install -r requirements.txt는 requirements 파일을 읽어 설치하고, pip install -e .는 현재 디렉터리를 editable install로 연결해 소스 수정이 곧바로 반영되게 해. Python 패키지 개발의 표준 방식이야.
pip freeze는 설치된 모든 패키지를 name==version 형식으로 출력해. pip이 lockfile에 가장 가까이 가는 기능으로, requirements.txt로 보내 현재 환경을 기록할 수 있어. pip list는 설치된 목록을 표로 보여 주고, pip show <pkg>는 한 패키지의 버전, 위치, 의존성, 홈페이지를 보여 줘. pip uninstall <pkg>는 패키지를 제거하지만 고아가 된 의존성까지 지우지는 않아. 이것이 pip의 지저분한 제거 문제야.