uv가 뭔가요?
uv는 Rust로 작성된 초고속 Python 패키지 및 프로젝트 매니저입니다. Ruff(Python 린터)를 만든 Astral에서 개발했으며, 기존 Python 생태계의 여러 도구들을 하나로 통합한 올인원 솔루션입니다.
한마디로 정리하면, pip + pip-tools + pipx + poetry + pyenv + virtualenv를 하나의 도구로 대체합니다.
기존 방식 vs uv 비교
기존 방식 (여러 도구 조합)
Python 프로젝트를 시작하려면 보통 이런 과정을 거칩니다.
# 1. Python 버전 관리 - pyenv 설치 및 사용
brew install pyenv
pyenv install 3.12
pyenv global 3.12
# 2. 가상환경 생성
python -m venv .venv
source .venv/bin/activate
# 3. 의존성 설치
pip install requests numpy pandas
pip freeze > requirements.txt
# 4. 실행
python main.py
도구마다 설치 방법, 명령어, 설정 파일이 다 다릅니다. 처음 Python 개발환경 세팅할 때 헷갈리는 이유가 바로 이것 때문이죠.
uv 방식 (하나의 도구)
# 1~4 전부 uv 하나로 해결
uv python install 3.12
uv venv
uv add requests numpy pandas
uv run python main.py
깔끔하죠?
왜 uv를 써야 할까요?
1. 압도적인 속도
pip 대비 10~100배 빠릅니다. 체감이 확실해서 한번 써보면 pip으로 못 돌아갑니다.
# pip - 대규모 패키지 설치 시 30초 이상
pip install numpy pandas scikit-learn tensorflow
# uv - 동일 작업 1~3초
uv add numpy pandas scikit-learn tensorflow
2. 도구 통합
| 기능 | 기존 도구 | uv |
|---|---|---|
| Python 버전 관리 | pyenv | uv python |
| 가상환경 생성 | venv, virtualenv | uv venv |
| 패키지 설치 | pip | uv add, uv pip |
| 의존성 잠금 | pip-tools, poetry | uv lock (자동) |
| CLI 도구 실행 | pipx | uvx |
3. 재현 가능한 환경
uv는 uv.lock 파일을 자동 생성하여 어떤 환경에서든 동일한 의존성을 보장합니다. requirements.txt를 수동으로 관리하던 불편함이 사라집니다.
4. 업계 표준으로 자리잡는 중
현재 PyPI 전체 요청의 10% 이상이 uv에서 발생하고 있습니다. Anthropic의 MCP(Model Context Protocol) 공식 문서도 uv를 기준으로 작성되어 있을 정도로 빠르게 확산 중입니다.
설치 방법
설치는 한 줄이면 끝납니다.
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
설치 후 확인:
uv --version
실제 사용 예시
방법 1: 기존 pip 습관 그대로 (호환 모드)
기존 pip 명령어에 익숙하다면 그대로 사용할 수 있습니다.
# pip install → uv pip install
uv pip install requests
# pip freeze → uv pip freeze
uv pip freeze > requirements.txt
# requirements.txt로 설치
uv pip install -r requirements.txt
방법 2: 프로젝트 기반 관리 (권장)
새 프로젝트를 시작할 때 권장하는 방식입니다.
# 프로젝트 초기화
uv init my-project
cd my-project
# 의존성 추가
uv add requests
uv add pytest --dev # 개발 의존성
# 실행
uv run python main.py
# 테스트
uv run pytest
방법 3: Python 버전 관리
pyenv 없이 Python 버전을 설치하고 관리할 수 있습니다.
# Python 설치
uv python install 3.11 3.12 3.13
# 설치된 버전 확인
uv python list
# 특정 버전으로 실행
uv run --python 3.11 python main.py
방법 4: CLI 도구 실행 (uvx)
pipx처럼 일회성 도구 실행이 가능합니다.
# ruff 린터 실행 (설치 없이)
uvx ruff check .
# black 포매터 실행
uvx black .
# 도구 영구 설치
uv tool install ruff
MCP 서버 개발 시 활용
Python 기반 MCP 서버를 만들 때 uv를 활용하면 환경 세팅이 간편해집니다.
# MCP 서버 프로젝트 생성
uv init my-mcp-server
cd my-mcp-server
# MCP 패키지 설치
uv add mcp
# 서버 실행
uv run python server.py
TypeScript 개발자를 위한 비유
Node.js 생태계와 비교하면 이해가 쉽습니다.
| Python (uv) | Node.js |
|---|---|
| uv | pnpm |
| uv.lock | pnpm-lock.yaml |
| pyproject.toml | package.json |
| uv add | pnpm add |
| uv run | pnpm run / npx |
| uvx | npx |
결론
uv는 Python 개발 환경의 복잡함을 해결하는 게임 체인저입니다.
- Python 프로젝트 자주 하신다면 → 지금 바로 설치
- 가끔 Python 쓰신다면 → 일단 설치해두면 편함
- MCP 서버 개발 예정이라면 → 필수
설치 용량도 작고(단일 바이너리), 기존 pip과 충돌도 없으니 부담 없이 설치해보세요.
curl -LsSf https://astral.sh/uv/install.sh | sh
한번 써보면 pip으로 돌아갈 수 없습니다.
참고 자료
'Tech Notes' 카테고리의 다른 글
| MCP 의 연결방식 (0) | 2026.01.13 |
|---|---|
| MCP Server 만들기 (0) | 2026.01.12 |
| Next.js 긴급 보안 취약점 CVE-2025-66478 정리 (0) | 2026.01.12 |
| Python 데이터 분석 4대 라이브러리 정리 (0) | 2026.01.07 |
| NestJS + gRPC 엔터프라이즈 아키텍처 (0) | 2025.12.23 |