Python 개발자는 이제 pip, poetry, pipenv 사이에서 고민할 필요가 없어졌습니다. Ruff를 만든 Astral 팀이 개발한 uv가 놀라운 속도로 Python 패키지 관리의 판도를 바꾸고 있습니다.
uv란?
uv는 Rust로 작성된 Python 패키지 및 프로젝트 관리 도구입니다. 설계 목표는 단 하나: 극한의 속도입니다.
| 기능 | 설명 |
|---|---|
| 패키지 설치 | pip 호환 의존성 해석 및 설치 |
| 프로젝트 관리 | poetry/pipenv 대체, 가상 환경 및 의존성 관리 |
| 캐싱 메커니즘 | 전역 캐시 + 하드 링크, 수 초 만에 반복 설치 |
| 다중 Python 버전 | 여러 Python 버전 자동 설치 및 관리 |
| 제로 설정 워크플로우 | uv init + uv add만으로 시작 |
| 라이선스 | MIT (완전 오픈소스) |
Astral 팀(Ruff 제작진)은 Rust 기반 고성능 도구 체인에서 쌓은 노하우를 uv에 그대로 쏟아부었습니다. 그 결과: pip보다 10~100배 빠릅니다.
📦 GitHub: https://github.com/astral-sh/uv ⭐ Stars: 50k+ (2026년 중반) 📄 License: MIT
uv 설치
uv 설치는 정말 간단합니다. 한 줄 명령어로 끝납니다:
# 공식 권장 방법 — 설치 스크립트
curl -LsSf https://astral.sh/uv/install.sh | sh
설치 완료 후 확인:
uv --version
# uv 0.7.x
Homebrew를 사용 중이라면 (macOS/Linux):
brew install uv
아니면 pipx로:
pipx install uv
빠른 시작: 첫 프로젝트 만들기
프로젝트 초기화
# 새 프로젝트 생성 (pyproject.toml + 가상 환경 자동 생성)
uv init my-app
cd my-app
생성된 파일 구조를 확인해 봅시다:
my-app/
├── .python-version # Python 버전 고정
├── pyproject.toml # 프로젝트 설정
├── README.md
├── main.py
└── uv.lock # 의존성 잠금 파일
pyproject.toml 내용은 매우 깔끔합니다:
[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []
의존성 추가
# 프로덕션 의존성 추가 (자동 해석 + 설치 + 잠금)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"
# 개발 의존성 추가
uv add --dev pytest ruff mypy
의존성 해석 → 다운로드 → 설치 → uv.lock 업데이트가 한 번에 처리됩니다. 보통 몇 초면 충분합니다.
코드 실행
# 가상 환경에서 스크립트 실행
uv run python main.py
# 설치된 도구 실행
uv run pytest
uv run ruff check .
uv run이 자동으로 프로젝트 가상 환경을 활성화해 줍니다. source .venv/bin/activate를 수동으로 입력할 필요가 없습니다.
고급 기능
다중 Python 버전 관리
uv에는 Python 버전 관리 기능이 내장되어 있습니다. 여러 Python 버전을 자동으로 다운로드하고 관리할 수 있습니다:
# 설치된 Python 버전 확인
uv python list
# 특정 버전 Python 설치
uv python install 3.13
uv python install 3.11
# 프로젝트에 Python 버전 지정
uv python pin 3.13
# 특정 버전에서 실행
uv run --python 3.11 python main.py
Python 개발자들을 오랫동안 괴롭히던 문제를 해결해 줍니다. 이제 pyenv는 필요 없습니다.
워크스페이스 (Workspace)
프로젝트에 여러 패키지가 있다면 uv의 워크스페이스 기능이 딱 맞습니다:
# 워크스페이스 초기화
uv init --package packages/core
uv init --package packages/cli
pyproject.toml:
[tool.uv.workspace]
members = ["packages/*"]
스크립트 관리
uv는 pyproject.toml에서 스크립트 별칭을 정의할 수 있습니다:
[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"
그리고 바로 실행:
uv run dev
uv run test
CI/CD 통합
GitHub Actions에서 uv 사용하기:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync --frozen
- name: Run tests
run: uv run pytest
enable-cache: true는 uv 패키지 다운로드를 캐시합니다. CI 속도가 눈에 띄게 빨라집니다.
pip/poetry와 속도 비교
다음은 Astral 공식 벤치마크 데이터입니다 (Django 및 모든 의존성 설치):
| 도구 | 첫 설치 | 캐시 설치 |
|---|---|---|
| pip | ~15초 | ~3초 |
| poetry | ~20초 | ~5초 |
| uv | ~1.5초 | ~0.3초 |
uv가 빠른 핵심 이유:
- Rust 구현 — 의존성 해석 엔진이 Rust로 작성되어 Python보다 몇 자릿수 빠릅니다
- 전역 캐시 — 패키지 다운로드 후 전역 캐시, 프로젝트 간 하드 링크로 공유
- 병렬 다운로드 — 여러 패키지를 동시에 다운로드, 네트워크 대역폭을 최대한 활용
- 스마트 캐시 — 해석 결과도 캐시되어 중복 계산을 피합니다
pip/poetry에서 마이그레이션
pip에서 마이그레이션
# 기존 requirements.txt로 프로젝트 생성
uv pip install -r requirements.txt
# 또는 새 프로젝트 생성 후 가져오기
uv init
uv add -r requirements.txt
poetry에서 마이그레이션
# pyproject.toml에서 의존성 직접 동기화
uv sync
# 다시 잠금이 필요하다면
uv lock
uv는 pyproject.toml 형식을 완전히 호환합니다. 대부분의 poetry 프로젝트는 바로 전환할 수 있습니다.
필수 명령어 퀵 레퍼런스
# 프로젝트 관리
uv init <name> # 새 프로젝트 생성
uv add <package> # 의존성 추가
uv remove <package> # 의존성 제거
uv sync # 의존성 동기화 (pip install -e . 유사)
uv lock # 의존성 다시 잠금
# 실행
uv run <command> # 가상 환경에서 명령 실행
uv tool run <tool> # 임시 도구 실행 (pipx run 유사)
uv tool install <tool> # 전역 도구 설치
# Python 관리
uv python install <ver> # Python 버전 설치
uv python list # 설치된 버전 목록
uv python pin <ver> # 프로젝트 Python 버전 고정
# 캐시
uv cache dir # 캐시 디렉토리 확인
uv cache clean # 캐시 정리
정리
uv는 Python 개발자의 새로운 표준 도구로 자리잡고 있습니다. Ruff 팀이 만들었고, 속도가 엄청나게 빠르며, API 설계가 간결하고, 완전한 오픈소스입니다.
추천 시나리오:
- ✅ 새 프로젝트 —
uv init으로 바로 시작 - ✅ CI/CD — 캐시 친화적, 빌드 속도 대폭 향상
- ✅ 다중 Python 버전 프로젝트 — 내장 버전 관리
- ✅ poetry/pipenv에서 마이그레이션 — pyproject.toml 호환
pip + venv나 poetry를 아직 사용 중이라면 uv를 꼭 한번 써 보세요. 초고속 설치를 경험하면 다시 돌아갈 수 없습니다.
🔗 공식 문서: https://docs.astral.sh/uv/ 🔗 GitHub: https://github.com/astral-sh/uv