Python을 배워보자
Python 패키지 관리자 uv: 속도와 편리함의 새로운 표준
_Blue_Sky_
2025. 4. 20. 00:58
728x90

Python 개발 환경에서 패키지 관리와 프로젝트 설정은 필수적이지만, 기존 도구들(pip, Poetry, Conda 등)은 느린 의존성 해결, 복잡한 가상 환경 관리, 도구 간 호환성 문제 등으로 개발자들을 종종 곤란하게 했습니다. 이러한 문제를 해결하기 위해 등장한 uv는 Rust로 작성된 초고속 Python 패키지 및 프로젝트 관리 도구로, 2024년 초 공개된 이후 빠르게 주목받고 있습니다. 이번 글에서는 uv의 특징, 설치 방법, 사용법, 그리고 왜 uv가 기존 도구를 대체할 수 있는지 자세히 알아보겠습니다.
1. uv란 무엇인가?
uv는 Astral(고성능 Python linter인 Ruff 개발사)이 만든 Python 패키지 및 프로젝트 관리 도구입니다. Rust로 구현되어 기존 Python 기반 도구들보다 10~100배 빠른 속도를 자랑하며, pip, Poetry, virtualenv, pyenv 등 여러 도구의 기능을 하나로 통합한 올인원 솔루션입니다. uv는 단순한 패키지 설치 도구를 넘어 프로젝트 관리, 가상 환경 설정, 의존성 관리, 그리고 빌드 및 배포까지 지원하는 강력한 도구로, “Python의 Cargo”를 목표로 합니다.
uv의 주요 특징
-
초고속 성능: Rust 기반으로 의존성 해결과 패키지 설치가 pip 대비 10~100배 빠르며, 하드 링크를 활용해 저장 공간도 효율적으로 사용합니다.
-
올인원 도구: pip, Poetry, virtualenv, pyenv, twine 등 기존 도구의 기능을 통합해 단일 워크플로우 제공.
-
표준 준수: PEP 517, 518, 508, 660 등 Python 패키징 표준을 완벽 지원해 호환성과 재현 가능성을 보장.
-
직관적인 인터페이스: 간단한 명령어로 가상 환경 생성, 패키지 설치, 프로젝트 실행 등을 처리.
-
크로스 플랫폼 지원: macOS, Linux, Windows에서 모두 원활히 동작.
-
커뮤니티 중심 개발: 오픈소스 프로젝트로, 활발한 커뮤니티 피드백을 반영해 빠르게 업데이트됨.
2. uv 설치 방법
uv는 다양한 플랫폼에서 손쉽게 설치할 수 있습니다. 공식 권장 방법은 전역 설치이며, 아래는 주요 설치 명령어입니다.
macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
또는 Homebrew 사용:
brew install uv
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
pip을 통한 설치
pip install uv
참고: pip 설치도 가능하지만, uv는 프로젝트 관리 도구로 전역 설치를 권장합니다.
설치 후 버전 확인:
uv --version
3. uv 주요 사용법
uv는 직관적인 명령어로 다양한 작업을 처리합니다. 아래는 초보자도 쉽게 따라 할 수 있는 주요 사용 예제입니다.
1) 가상 환경 생성
기존 venv 모듈 대신 uv로 빠르게 가상 환경을 생성할 수 있습니다.
uv venv .venv
특정 Python 버전 지정:
uv venv --python 3.12.5
생성된 가상 환경은 source .venv/bin/activate(Linux/macOS) 또는 .venv\Scripts\activate(Windows)로 활성화합니다.
2) 패키지 설치
pip의 install 명령어를 대체하며, uv는 uv pip 또는 uv add를 사용합니다.
uv pip install requests
프로젝트 의존성 추가 (pyproject.toml에 기록):
uv add fastapi
특정 옵션 포함 설치 (예: fastapi[standard]):
uv add fastapi --extra standard
3) 프로젝트 초기화
새 프로젝트를 생성하고 기본 파일(pyproject.toml, .python-version 등)을 설정합니다.
uv init my-project
cd my-project
이 명령은 .python-version, pyproject.toml, hello.py 등을 생성합니다.
4) 의존성 동기화
uv sync는 uv.lock 파일을 기반으로 의존성을 설치하며, 가상 환경이 없으면 자동 생성합니다.
uv sync
5) 스크립트 실행
uv run은 가상 환경 활성화 없이 프로젝트 환경에서 명령어를 실행합니다.
uv run python main.py
Django 서버 실행 예:
uv run manage.py runserver
6) Python 버전 관리
uv는 pyenv처럼 Python 버전을 설치하고 관리할 수 있습니다.
uv python install 3.12
uv python pin 3.12.5 # 프로젝트에 버전 고정
7) 기존 도구와의 호환
requirements.txt 사용:
uv pip install -r requirements.txt
uv pip freeze > requirements.txt
4. uv의 장단점
장점
-
속도: Rust 기반으로 pip, Poetry, Conda 대비 압도적으로 빠름. 대규모 프로젝트에서 특히 유리.
-
통합성: 여러 도구의 기능을 하나로 통합해 학습 곡선과 설정 복잡도를 줄임.
-
효율성: 하드 링크를 활용해 디스크 공간 절약, 의존성 충돌 최소화.
-
커뮤니티 지원: Anthropic, OpenAI 등 주요 기업에서 채택하며 빠르게 성장 중.
단점
-
생태계 미성숙: 일부 패키지가 uv에서 지원되지 않을 수 있음.
-
플랫폼 독립성 제한: Poetry의 poetry.lock처럼 플랫폼 독립적인 lockfile을 생성하지 않음.
-
학습 곡선: 기존 pip 또는 Poetry 사용자에게 새로운 명령어를 익히는 데 약간의 시간이 필요.
5. uv로 전환해야 할 이유
만약 당신이 다음과 같은 문제를 겪고 있다면, uv는 훌륭한 대안이 될 수 있습니다:
-
pip install이 느리거나 의존성 충돌이 잦은 경우
-
가상 환경 관리와 패키지 설치가 번거로운 경우
-
Poetry의 느린 의존성 해결 속도에 불만이 있는 경우
-
Conda의 이원화된 생태계로 인한 호환성 문제
uv는 특히 대규모 프로젝트, 머신러닝/데이터 사이언스, 백엔드 개발에서 빠르고 안정적인 워크플로우를 제공합니다. 실제로 Reddit와 같은 커뮤니티에서도 uv의 속도와 편리함에 대한 긍정적인 피드백이 이어지고 있습니다.
6. 시작하기
uv를 처음 사용해보려면 다음 단계를 따라 보세요:
-
uv 설치: 위의 설치 명령어 실행.
-
간단한 프로젝트 생성:
uv init my-project cd my-project uv add requests uv run python -c "import requests; print(requests.get('https://api.github.com').status_code)"
결론
uv는 Python 패키지 관리의 새로운 패러다임을 제시합니다. Rust로 구현된 초고속 성능, 직관적인 인터페이스, 그리고 기존 도구의 장점을 통합한 올인원 접근 방식은 개발자 경험을 획기적으로 개선합니다. 아직 출시된 지 1년 남짓이지만, uv는 이미 Python 생태계에서 필수 도구로 자리 잡고 있습니다. 지금 uv를 설치하고, 더 빠르고 효율적인 Python 개발 환경을 경험해 보세요!
참고 자료
-
Astral 공식 uv 저장소: https://github.com/astral-sh/uv
-
uv 공식 문서: https://docs.astral.sh/uv/
728x90