본문 바로가기
tip

Python uv 완벽 가이드 2026 — pip보다 10배 빠른 패키지 매니저 실전 활용

by bamsik 2026. 2. 26.
반응형

Python 개발을 하다 보면 pip install이 느려서 답답했던 적 많으시죠? 특히 패키지가 많은 프로젝트에서 가상환경 세팅하는 데 몇 분씩 걸리는 게 너무 비효율적이었는데요. uv가 그 답이에요. Rust로 만들어진 Python 패키지 매니저로, pip보다 최대 100배, 보통 10~20배 빠르고, 가상환경 관리와 Python 버전 관리까지 한 번에 해결해줘요. 2026년 현재 많은 Python 개발자들이 uv로 갈아타고 있거든요. 지금부터 실전 세팅 방법을 알려드릴게요.

⚡ uv란? — pip를 대체하는 초고속 패키지 매니저

uv는 Astral 팀(Ruff를 만든 팀)이 개발한 Python 패키지 매니저예요. 2024년 말부터 빠르게 성장해서 2026년에는 Python 개발 표준 도구 중 하나가 됐어요.

uv vs pip 속도 비교

  • numpy 설치: pip 8초 → uv 0.4초 (20배 빠름)
  • Django + 의존성 전체: pip 45초 → uv 3초 (15배 빠름)
  • ML 패키지 묶음(torch, transformers 등): pip 3분 → uv 12초 (15배 빠름)

이미 다운로드된 패키지는 캐시에서 즉시 불러오기 때문에 두 번째 설치부터는 더 빨라요.

🚀 설치 및 기본 사용법

1. uv 설치

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# pip으로도 설치 가능
pip install uv

2. Python 버전 관리

uv는 Python 버전 설치/전환도 직접 해줘요. pyenv가 필요 없어져요.

# Python 3.13 설치
uv python install 3.13

# 사용 가능한 Python 버전 목록
uv python list

# 특정 버전 사용
uv python pin 3.12

3. 가상환경 만들기

# 가상환경 생성 (기본 .venv 폴더)
uv venv

# 특정 Python 버전으로 생성
uv venv --python 3.13

# 활성화 (macOS/Linux)
source .venv/bin/activate

# 활성화 (Windows)
.venv\Scripts\activate

📦 패키지 설치 — pip 명령어와 비교

# pip 방식 → uv 방식
pip install requests        →  uv pip install requests
pip install -r requirements.txt  →  uv pip install -r requirements.txt
pip freeze > requirements.txt   →  uv pip freeze > requirements.txt
pip list                    →  uv pip list

기존 pip 명령어 앞에 uv만 붙이면 돼요. 학습 비용이 거의 없어요.

🎯 uv 프로젝트 관리 — pyproject.toml 통합

uv의 진짜 강점은 프로젝트 관리예요. uv init으로 시작하면 pyproject.toml 기반으로 의존성을 관리할 수 있어요.

# 새 프로젝트 초기화
uv init my-project
cd my-project

# 패키지 추가 (pyproject.toml 자동 업데이트)
uv add fastapi
uv add pytest --dev  # 개발 의존성

# 패키지 제거
uv remove requests

# 의존성 동기화 (lock 파일 기반)
uv sync

# 스크립트 실행
uv run python main.py
uv run pytest

생성되는 파일 구조

my-project/
├── pyproject.toml    # 프로젝트 메타데이터 + 의존성
├── uv.lock           # 정확한 버전 고정 (팀 전체 동일 환경 보장)
├── .python-version   # Python 버전 지정
└── src/
    └── my_project/

💡 실전 팁 — CI/CD와 팀 협업에서 uv 사용하기

GitHub Actions에서 uv 사용

name: Test
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install uv
        uses: astral-sh/setup-uv@v3
        with:
          version: "latest"
      - name: Install dependencies
        run: uv sync
      - name: Run tests
        run: uv run pytest

setup-uv 액션을 사용하면 uv 설치 + 캐시까지 자동으로 처리돼서 CI 속도가 크게 빨라져요.

Docker에서 uv 사용

FROM python:3.13-slim
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-cache

COPY . .
CMD ["uv", "run", "python", "main.py"]

🔄 기존 pip 프로젝트에서 uv로 마이그레이션

기존 requirements.txt 프로젝트를 uv로 전환하는 방법:

# 1. uv 초기화 (기존 폴더에서)
uv init --bare

# 2. requirements.txt에서 의존성 가져오기
uv add $(cat requirements.txt | grep -v '#' | tr '\n' ' ')

# 또는 requirements.txt 직접 설치 (uv pip 방식)
uv pip install -r requirements.txt

# 3. lock 파일 생성
uv lock

⚠️ 주의사항

  • 일부 C 확장 패키지는 바이너리 캐시가 없어서 처음엔 비슷한 속도일 수 있어요
  • conda 환경과 혼용은 추천하지 않아요 — 충돌 위험이 있어요
  • uv.lock 파일은 반드시 git에 커밋해야 팀 전체가 동일한 환경을 쓸 수 있어요

🎯 마무리

uv는 Python 개발 환경에서 진짜 게임체인저예요. pip가 느려서 답답하셨던 분들, 가상환경 관리가 복잡하셨던 분들, CI/CD에서 패키지 설치 시간을 줄이고 싶으신 분들 모두에게 추천해요. 한번 써보면 다시 pip로 돌아가기 싫어질 거예요 😄

처음엔 uv venv + uv pip install만 써보고, 익숙해지면 uv init + uv add로 넘어가는 방식을 추천해요!


📎 참고 자료

반응형