개요
UV는 Rust로 작성된 차세대 Python 패키지 관리자로, 기존 pip의 성능 한계를 극복하고 현대적인 개발 워크플로우를 지원합니다.
Astral에서 개발한 이 도구는 단순한 pip 대체재를 넘어 Python 프로젝트 관리의 전체적인 경험을 혁신하고 있습니다.

왜 UV인가?
성능의 혁신
- 10-100배 빠른 속도: Rust 기반 구현으로 패키지 설치 속도가 극적으로 향상
- 병렬 다운로드: 여러 패키지를 동시에 다운로드하여 시간 단축
- 효율적인 캐싱: 글로벌 캐시로 중복 다운로드 방지
현대적인 기능
- 의존성 해결 개선: 더 정확하고 빠른 의존성 충돌 해결
- lockfile 지원: 재현 가능한 빌드를 위한 uv.lock 파일
- Python 버전 관리: pyenv 없이도 Python 버전 설치 및 관리
설치 및 기본 사용법
설치
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# pip로 설치
pip install uv
기본 명령어
# 패키지 설치 (pip install 대체)
uv pip install requests
# requirements.txt에서 설치
uv pip install -r requirements.txt
# 가상환경 생성 및 활성화
uv venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# 프로젝트 초기화
uv init my-project
cd my-project
주요 기능 상세
1. 프로젝트 관리
# 새 프로젝트 생성
uv init --name my-app --package
# 의존성 추가
uv add requests pandas
# 개발 의존성 추가
uv add --dev pytest black
# 의존성 제거
uv remove requests
2. Python 버전 관리
# 사용 가능한 Python 버전 확인
uv python list
# 특정 Python 버전 설치
uv python install 3.12
# 프로젝트에 Python 버전 지정
uv python pin 3.12
3. 스크립트 실행
# 일회성 스크립트 실행 (의존성 자동 설치)
uv run --with requests script.py
# 인라인 의존성으로 스크립트 실행
uv run --with "requests>=2.28" python -c "import requests; print(requests.__version__)"
실제 사용 시나리오
기존 프로젝트 마이그레이션
# 기존 requirements.txt가 있는 프로젝트
uv venv
uv pip install -r requirements.txt
# pip-tools 스타일 워크플로우
uv pip compile requirements.in
uv pip sync requirements.txt
새 프로젝트 시작
# 완전한 프로젝트 설정
uv init my-web-app
cd my-web-app
uv add fastapi uvicorn
uv add --dev pytest black isort
uv run python main.py
CI/CD 최적화
# GitHub Actions 예시
- name: Install dependencies
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
uv pip install -r requirements.txt
성능 비교
벤치마크 결과
| 작업 | pip | uv | 개선율 |
| Django 설치 | 45초 | 1.5초 | 30배 |
| NumPy 설치 | 12초 | 0.8초 | 15배 |
| requirements.txt (50개 패키지) | 2분 | 8초 | 15배 |
메모리 사용량
- pip: 평균 200MB
- uv: 평균 50MB (75% 절약)
고급 기능
1. Workspace 관리
# pyproject.toml
[tool.uv.workspace]
members = ["packages/*"]
[tool.uv.sources]
my-local-package = { path = "packages/my-package" }
2. 커스텀 인덱스
# 사내 PyPI 서버 사용
uv pip install --index-url https://pypi.company.com/simple/ my-package
# 추가 인덱스 지정
uv pip install --extra-index-url https://test.pypi.org/simple/ test-package
3. 환경 변수 설정
# 글로벌 설정
export UV_INDEX_URL="https://pypi.company.com/simple/"
export UV_CACHE_DIR="/custom/cache/path"
# 프로젝트별 설정
echo "index-url = 'https://pypi.company.com/simple/'" > .uv.toml
기존 도구와의 호환성
pip 명령어 매핑
# pip → uv 변환
pip install package → uv pip install package
pip freeze → uv pip freeze
pip list → uv pip list
pip uninstall package → uv pip uninstall package
Poetry/PDM 사용자를 위한 팁
# Poetry 스타일 의존성 관리
uv add requests # poetry add requests와 동일
uv remove requests # poetry remove requests와 동일
# PDM 스타일 스크립트 실행
uv run python script.py # pdm run python script.py와 유사
실무 적용 가이드
1. 팀 도입 전략
# 1단계: 개발자 개별 테스트
uv venv test-env
uv pip install -r requirements.txt
# 2단계: CI/CD 파이프라인 적용
# 기존 pip 명령어를 uv pip로 점진적 교체
# 3단계: 프로젝트 표준화
uv init --package
uv add --dev pre-commit black pytest
2. 성능 모니터링
# 설치 시간 측정
time uv pip install -r requirements.txt
# 캐시 상태 확인
uv cache info
uv cache clean # 캐시 정리
3. 문제 해결
# 상세 로그 출력
uv pip install package -v
# 의존성 충돌 해결
uv pip install package --resolution=highest
# 강제 재설치
uv pip install package --force-reinstall
한계점과 고려사항
현재 제한사항
- 생태계 성숙도: 상대적으로 새로운 도구로 일부 엣지 케이스 존재
- Windows 지원: Linux/macOS 대비 상대적으로 제한적
- 레거시 패키지: 일부 오래된 패키지에서 호환성 이슈 가능
마이그레이션 시 주의점
- 기존 가상환경과의 충돌 가능성
- CI/CD 파이프라인 수정 필요
- 팀원들의 학습 곡선
미래 전망
로드맵
- 더 나은 의존성 해결: 복잡한 의존성 그래프 처리 개선
- IDE 통합: VS Code, PyCharm 등과의 네이티브 통합
- 엔터프라이즈 기능: 보안, 감사, 정책 관리 기능 강화
커뮤니티 성장
- GitHub 스타 수 급속 증가 (20k+)
- 주요 Python 프로젝트들의 도입 확산
- 활발한 개발 및 버그 수정
결론
UV는 단순한 pip 대체재를 넘어 Python 개발 경험을 전반적으로 개선하는 도구입니다. 특히 대규모 프로젝트나 CI/CD 파이프라인에서 그 진가를 발휘하며, 개발 생산성을 크게 향상시킬 수 있습니다.
현재 프로젝트에서 패키지 설치 속도나 의존성 관리에 어려움을 겪고 있다면, UV 도입을 진지하게 고려해볼 만합니다. 점진적 도입을 통해 리스크를 최소화하면서도 성능 향상의 이점을 누릴 수 있을 것입니다.
GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust.
An extremely fast Python package and project manager, written in Rust. - astral-sh/uv
github.com
uv
An extremely fast Python package and project manager, written in Rust. Installing Trio's dependencies with a warm cache. 🚀 A single tool to replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and more. ⚡️ 10-100x faster than pip. 🗂️
docs.astral.sh
PIP를 대체하는 UV 사용법 가이드
devocean.sk.com
'프로그래밍 > 기타' 카테고리의 다른 글
| Visual Studio Code Extension 개발 (0) | 2025.08.01 |
|---|---|
| MOM(Message Oriented Middleware, 메세지 지향 미들웨어), 메시지 큐(Message Queue) (0) | 2025.02.06 |
| ChromeDriver 설치 없이 selenium 실행하는 법, webdriver_manager (0) | 2024.12.11 |
| 컴파일 과정, 컴파일러 (0) | 2024.08.02 |
| TOTP(Time Based One Time Password) (0) | 2024.04.15 |