C.W.K.
Stream
Lesson 03 of 05 · published

가상환경 — venv / uv / 현대 setup

~18 min · venv, virtualenv, uv, isolation

Level 0호기심
0 XP0/93 lessons0/23 achievements
0/100 XP to next level100 XP to go0% complete

왜 virtualenv 가 존재

격리 없으면 모든 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) 로 활성화. 활성화 후 pythonpip 가 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 자동 활성화.

External links

Exercise

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.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

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

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