- uv는 Rust로 작성된 초고속 Python 패키지 installer 및 resolver로,
pip및pip-tools워크플로우를 대체하기 위해 설계됨 - uv는 "Cargo for Python"을 향한 이정표로, 빠르고, 신뢰할 수 있으며 사용하기 쉬운 종합적인 Python 프로젝트 및 패키지 관리자
- Rye, Armin Ronacher가 실험적으로 개발한 Python 패키징 도구의 관리를 인수하여 uv를 통합된 후속 프로젝트로 확장할 계획
성능에 대한 집착적인 초점
- uv는 캐싱 없이
pip및pip-tools보다 8-10배 빠르며, 캐시가 있을 때는 80-115배 빠름. - 전역 모듈 캐시를 사용하여 의존성을 다시 다운로드하거나 빌드하지 않고, 지원되는 파일 시스템에서 Copy-on-Write 및 하드링크를 활용하여 디스크 공간 사용을 최소화함.
채택 최적화
- uv의 초기 릴리스는
pip및pip-toolsAPI를 지원하며, 기존 프로젝트에서 구성 변경 없이 사용 가능함. - uv는 단일 정적 바이너리로 제공되며,
pip,pip-tools,virtualenv를 대체할 수 있음. - Python 버전에 따라
pip설치를 관리할 필요 없이 Python 자체와 별도로 설치할 수 있음.
"Cargo for Python": uv와 Rye
- uv는 빠르고, 신뢰할 수 있으며 사용하기 쉬운 통합된 Python 패키지 및 프로젝트 관리자를 향한 중간 이정표임.
- uv는
pip,pip-tools,virtualenv뿐만 아니라pipx,tox,poetry,pyenv,ruff등을 포함하는 단일 바이너리를 목표로 함.
호환 가능 API
pip install대신uv pip install을 사용하여 Python 의존성을 명령줄, 요구 사항 파일 또는pyproject.toml에서 설치할 수 있음.pip-compile대신uv pip compile을 사용하여 잠긴requirements.txt를 생성할 수 있음.pip-sync대신uv pip sync을 사용하여 잠긴requirements.txt와 가상 환경을 동기화할 수 있음.
로드맵
- 이 릴리스 이후, 사용자 지원을 우선시하며 호환성, 성능 및 안정성 향상에 집중할 계획임.
- 이후에는 uv를 완전한 Python 프로젝트 및 패키지 관리자로 확장하는 것을 목표로 함.
감사의 말
- uv 개발에 직접적으로 또는 간접적으로 기여한 모든 이들에게 감사를 표함.
- 특히, PubGrub의 기본 버전 해결자로서 uv에 사용되는 Jacob Finkelman과 Matthieu Pizenberg에게 감사함.
GN⁺의 의견
- uv는 Python 개발자들에게 기존
pip도구보다 훨씬 빠른 성능을 제공하여 프로젝트 설정 시간을 크게 단축시킬 수 있는 혁신적인 도구임. - Rust로 작성되어 Python 생태계 내에서 성능과 안정성을 중시하는 새로운 트렌드를 반영하고 있으며, 이는 개발자 경험을 크게 향상시킬 것으로 기대됨.
- uv의 개발은 Python 패키징 및 프로젝트 관리 도구의 통합을 지향하며, 이는 개발자들이 보다 효율적이고 일관된 방식으로 작업할 수 있게 할 것임.