격리 없으면 모든 pip install 이 시스템 Python 으로. 같은 라이브러리의 다른 버전 필요한 두 프로젝트가 공존 X. 가상환경이 각 프로젝트에 자체 격리 site-packages 디렉토리 줘 — 뭐든 install, 충돌 X.
venv — stdlib 답
python -m venv .venv 가 .venv/ 에 virtualenv 생성. source .venv/bin/activate (Unix) 또는 .venv\Scripts\activate (Windows) 로 활성화. 활성화 후 python 과 pip 가 venv 바이너리 가리킴. deactivate 로 비활성화. 표준, Python 함께 ship, 어디서나 작동.
uv — 현대 빠른 대안
uv (Astral 의) 는 Rust 로 짠 pip + venv 의 drop-in 대체, 10-100 배 빠름. uv venv 가 env 생성. uv pip install foo 가 거기 install. Pippa 의 stack 이 uv 사용. 트레이드오프 — pip 대비 아직 성숙 중, pip 가 보편 가능 baseline. 가능하면 uv, 못 하면 pip 로 fallback.
conda — 별 생태계
conda 가 Python 인터프리터와 패키지 둘 다 관리, non-Python 의존성 (CUDA, BLAS, 시스템 라이브러리) 지원. 데이터 사이언스, ML, 시스템 레벨 의존성 가진 pre-built 바이너리 필요한 모든 곳에 유용. Pippa 가 정확히 이 이유로 conda env (cwk-pippa) 에서 실행. 필요하면 conda, 안 필요하면 venv/uv.
원칙: 프로젝트당 venv 하나. 시스템 Python 에 절대 pip install X. 활성화 비용 ~1 초, skip 해서 발생하는 의존성 지옥 비용 시간.
Code
venv — 표준 방법·bash
# 현재 디렉토리에 venv 생성
python -m venv .venv
# 활성화 (Unix/macOS)
source .venv/bin/activate
# 활성화 (Windows PowerShell)
# .venv\Scripts\Activate.ps1
# 이제 pip install 이 venv 로
pip install requests
# 확인
which python # /path/to/.venv/bin/python
which pip # /path/to/.venv/bin/pip
# 끝나면 비활성화
deactivate
uv — 현대, 빠름·bash
# uv 설치 (일회성, 시스템 레벨)
# curl -LsSf https://astral.sh/uv/install.sh | sh
# venv 생성
uv venv .venv
# 활성화 (venv 와 같음)
source .venv/bin/activate
# 설치 — uv pip 가 극적으로 빠름
uv pip install requests httpx
# 또는 uv 의 project 모드 (별 venv 활성화 불필요)
# uv add requests — pyproject.toml + .venv 에 추가
# uv run python script.py — 프로젝트 venv 에서 실행
venv 들여다보기·python
import sys
# 활성화된 venv 안에서:
print(sys.prefix) # /path/to/.venv
print(sys.executable) # /path/to/.venv/bin/python
# 가끔 유용 — 베이스 인터프리터와 venv 구분
print(sys.base_prefix) # /path/to/system/python
print(sys.prefix == sys.base_prefix) # venv 면 False, 아니면 True
Direnv — 디렉토리별 자동 활성화·bash
# direnv (별 도구, brew install direnv) 가 cd 하면 .envrc 로드.
# 프로젝트 디렉토리에서:
# echo "source .venv/bin/activate" > .envrc
# direnv allow
#
# 이제 디렉토리에 cd 하면 venv 자동 활성화,
# 나가면 비활성화.
#
# Pippa 가 conda 와 direnv 사용 — cwkPippa 에 cd 하면
# cwk-pippa conda env 자동 활성화.
python -m venv 로 /tmp/test_venv 에 fresh venv 생성. 활성화. which python 이 거기 가리키는지 확인. 한 패키지 (예 requests) 설치 + /tmp/test_venv/lib/python3.x/site-packages/ 에 있는지 확인. 비활성화. which python 이 더 이상 venv 안 가리키는지 확인. 그 다음 디렉토리 삭제.
Progress
Progress is local-only — sign in to sync across devices.