파이썬 (Python)
Poetry 보다 좋은 uv
Wibaek
2025. 6. 5. 16:03
728x90
개요
Python 프로젝트를 시작할 때, 환경 설정과 의존성 관리는 시간이 꽤 걸리는 작업이다. 그래서 Poetry등의 도구가 등장했고, pyproject.toml 기반의 명확한 구조와 편의성 덕분에 나 역시 Poetry를 애용해왔다.
하지만 최근 등장한 새로운 패키지 매니저 uv를 써보고 나서는 생각이 바뀌었다.
속도, 실용성, 그리고 확장성 면에서 uv는 Poetry의 상위 호환에 가깝다.
이 글에서는 uv를 어떻게 실제로 개발 환경에서 활용할 수 있는지를 공유하려 한다.
uv
uv는 Astral에서 개발한 초고속 Python 패키지 매니저로, 기존의 pip, venv, pip-tools, setuptools, poetry의 기능을 대체하거나 통합한다.
Rust로 구현되어 있어 패키지 설치 속도가 압도적으로 빠르며, 다양한 Python 프로젝트에 즉시 적용할 수 있다.
핵심 특징:
- ⚡ 극단적으로 빠른 의존성 설치 (Rust 기반 resolver)
- 📦 requirements.txt, pyproject.toml 모두 지원
- 🔒 Git conflict에 강한 uv.lock (TOML 포맷)
- 🧪 uv venv, uv pip, uv run 등 단일 명령어로 전체 개발 환경 구성 가능
- 🔁 Poetry처럼 pyproject.toml 기반 관리도 가능하지만, 훨씬 유연함
설치 방법
# Mac에서 설치
brew install uv
# 또는
curl -LsSf <https://astral.sh/uv/install.sh> | sh
# Windows에서 설치
powershell -ExecutionPolicy ByPass -c "irm <https://astral.sh/uv/install.ps1> | iex"
# pip으로 설치(비권장)
pip install uv
실전 예제: uv로 프로젝트 시작하기
uv init
# 의존성 추가
uv add requests
# 개발 의존성 추가
uv add --dev pytest
# requirements.txt 방식
uv pip freeze > requirements.txt
uv pip freeze --dev > requirements-dev.txt
# 실행
uv run ruff check
uv run python manage.py
# 최초 의존성 설치
uv venv
uv sync # pyproject.toml 기반의 경우
uv pip install -r requirements.txt # requirements.txt 기반의 경우
Reference
PIP를 대체하는 UV 사용법 가이드
devocean.sk.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
728x90