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 설치는 정말 간단합니다. 한 줄 명령어로 끝납니다:

BASH
# 공식 권장 방법 — 설치 스크립트
curl -LsSf https://astral.sh/uv/install.sh | sh

설치 완료 후 확인:

BASH
uv --version
# uv 0.7.x

Homebrew를 사용 중이라면 (macOS/Linux):

BASH
brew install uv

아니면 pipx로:

BASH
pipx install uv

빠른 시작: 첫 프로젝트 만들기

프로젝트 초기화

BASH
# 새 프로젝트 생성 (pyproject.toml + 가상 환경 자동 생성)
uv init my-app
cd my-app

생성된 파일 구조를 확인해 봅시다:

my-app/
├── .python-version    # Python 버전 고정
├── pyproject.toml     # 프로젝트 설정
├── README.md
├── main.py
└── uv.lock            # 의존성 잠금 파일

pyproject.toml 내용은 매우 깔끔합니다:

TOML
[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []

의존성 추가

BASH
# 프로덕션 의존성 추가 (자동 해석 + 설치 + 잠금)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"

# 개발 의존성 추가
uv add --dev pytest ruff mypy

의존성 해석 → 다운로드 → 설치 → uv.lock 업데이트가 한 번에 처리됩니다. 보통 몇 초면 충분합니다.

코드 실행

BASH
# 가상 환경에서 스크립트 실행
uv run python main.py

# 설치된 도구 실행
uv run pytest
uv run ruff check .

uv run이 자동으로 프로젝트 가상 환경을 활성화해 줍니다. source .venv/bin/activate를 수동으로 입력할 필요가 없습니다.

고급 기능

다중 Python 버전 관리

uv에는 Python 버전 관리 기능이 내장되어 있습니다. 여러 Python 버전을 자동으로 다운로드하고 관리할 수 있습니다:

BASH
# 설치된 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의 워크스페이스 기능이 딱 맞습니다:

BASH
# 워크스페이스 초기화
uv init --package packages/core
uv init --package packages/cli

pyproject.toml:

TOML
[tool.uv.workspace]
members = ["packages/*"]

스크립트 관리

uv는 pyproject.toml에서 스크립트 별칭을 정의할 수 있습니다:

TOML
[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"

그리고 바로 실행:

BASH
uv run dev
uv run test

CI/CD 통합

GitHub Actions에서 uv 사용하기:

YAML
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가 빠른 핵심 이유:

  1. Rust 구현 — 의존성 해석 엔진이 Rust로 작성되어 Python보다 몇 자릿수 빠릅니다
  2. 전역 캐시 — 패키지 다운로드 후 전역 캐시, 프로젝트 간 하드 링크로 공유
  3. 병렬 다운로드 — 여러 패키지를 동시에 다운로드, 네트워크 대역폭을 최대한 활용
  4. 스마트 캐시 — 해석 결과도 캐시되어 중복 계산을 피합니다

pip/poetry에서 마이그레이션

pip에서 마이그레이션

BASH
# 기존 requirements.txt로 프로젝트 생성
uv pip install -r requirements.txt

# 또는 새 프로젝트 생성 후 가져오기
uv init
uv add -r requirements.txt

poetry에서 마이그레이션

BASH
# pyproject.toml에서 의존성 직접 동기화
uv sync

# 다시 잠금이 필요하다면
uv lock

uv는 pyproject.toml 형식을 완전히 호환합니다. 대부분의 poetry 프로젝트는 바로 전환할 수 있습니다.

필수 명령어 퀵 레퍼런스

BASH
# 프로젝트 관리
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