개요
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 기반의 경우