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

실행 환경 — 의존성과 Python 자체를 격리하기

~18 min · venv, virtualenv, uv, isolation

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

프로젝트마다 필요한 Python과 라이브러리 버전이 다르므로 격리된 환경이 필요해. 일반 생태계에서는 stdlib venv와 빠른 uv가 널리 쓰이고, 환경 디렉터리 자체보다 pyproject와 lock 같은 선언을 버전 관리해.

Conda는 Python뿐 아니라 CUDA·BLAS 같은 네이티브 의존성까지 관리해. CWK Mac은 프로젝트 안 .venv를 만들지 않고 이름 붙인 Conda 환경의 정확한 실행 파일을 호출하는 규칙을 써. 남아 있는 venv 디렉터리는 기본값이 아니라 이전 흔적이야.

어느 도구든 시스템 Python에 무심코 설치하지 말고, 현재 인터프리터와 설치 대상을 먼저 확인해.

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 에서 실행
현재 인터프리터와 site-packages 확인하기·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
디렉터리별 환경 선택 도구·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

격리의 원리를 확인하려고 /tmp/test_venv에 임시 venv를 만들고 실행 파일 경로와 requests 설치 위치를 확인한 뒤 환경을 지워. 이 실습은 일반 Python 규약 확인용이며, CWK 작업에서는 이름 붙인 Conda 환경을 쓴다는 차이도 적어.

Progress

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

댓글 0

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

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