uv - 새로운 Python 패키지, 프로젝트 및 환경 관리자
Python uv의 장점
Python uv (발음: “유비”)는 Rust로 작성된 현대적이고 고성능의 Python 패키지 및 프로젝트 관리 도구입니다. 이 도구는 전통적인 Python 패키지 관리 도구인 pip
, pip-tools
, virtualenv
, pipx
, pyenv
의 대체 도구로 설계되어 Python 개발 워크플로우를 간소화하고 가속화하는 것을 목표로 합니다.
uv는 인기 있는 Python 린터인 Ruff를 개발한 Astral 팀에서 개발했으며, Rust의 성능과 현대적인 소프트웨어 아키텍처를 활용하여 Python 생태계에서 느린 설치, 의존성 충돌, 복잡한 환경 관리와 같은 일반적인 문제점을 해결하도록 설계되었습니다.
uv의 주요 기능
- 놀라운 속도: uv는 전통적인 도구보다 훨씬 빠릅니다. 일반적으로 캐시 없이 pip보다 8
10배 빠르고, 따뜻한 캐시가 있을 경우 최대 80115배 빠릅니다. - 모든 기능을 하나로: 패키지 설치, 의존성 해결, 가상 환경 관리, Python 버전 관리, 프로젝트 템플릿 생성, 스크립트 실행 기능을 하나의 도구에 통합했습니다.
- 호환성: pip와 호환되는 명령줄 인터페이스를 제공하여 학습 곡선이 가파르지 않도록 설계되었습니다.
- 강력한 의존성 관리: 정확한 의존성 해결과 락파일 지원을 통해 재현 가능한 환경을 제공합니다.
- 자동 가상 환경 생성: 가상 환경을 자동으로 생성하고 관리하여 수동 설정을 줄입니다.
- 크로스 플랫폼 지원: macOS, Linux, Windows에서 작동합니다.
- 단일 설치: Python이나 Rust가 필요 없이 간단한 설치자나
curl
을 사용하여 설치할 수 있습니다.
여전히 uv를 사용해야 할 이유가 궁금하다면?
- 성능: 패키지 설치 및 의존성 해결 시간을 극적으로 줄입니다.
- 간단함: 여러 도구를 하나로 통합하여 프로젝트 설정 및 관리를 간소화합니다.
- 신뢰성: 명확한 오류 메시지와 충돌 해결을 통해 일관되고 재현 가능한 환경을 제공합니다.
- 현대 표준:
pyproject.toml
을 지원하여 현재 Python 패키징 표준과 일치합니다.
예시 사용 사례
흥미로운 것을 시도해 보겠습니다!
- 새로운 프로젝트 시작:
uv init myproject
cd myproject
uv add requests
uv run python script.py
이 명령어는 프로젝트 디렉터리를 생성하고 가상 환경을 설정하여 의존성을 설치하고, 고립된 환경에서 스크립트를 실행합니다.
- 인라인 의존성을 가진 스크립트 관리:
uv add --script script.py requests
uv run script.py
uv는 별도의 요구사항 파일 없이 단일 파일 스크립트의 의존성을 관리할 수 있습니다.
전통적인 도구와의 비교
기능 | uv | pip/virtualenv | Poetry |
---|---|---|---|
속도 | 매우 빠름 | 느림 | 중간 |
가상 환경 | 자동 | 수동 | 자동 |
의존성 해결 | 고급 | 기본 | 고급 |
Python 버전 관리 | 예 | 아니요 (pyenv 필요) | 아니요 |
락파일 지원 | 예 | 아니요 (pip-tools 필요) | 예 |
스크립트 실행 | 통합 | 없음 | 제한됨 |
시스템에서 uv를 설치하고 사용하는 방법
시스템에서 uv를 설치하고 사용하려면 다음 단계를 따르세요:
설치
- 단일 설치자 (추천)
- Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
또는 wget
을 선호하는 경우:
wget -qO- https://astral.sh/uv/install.sh | sh
- Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- 특정 버전: URL에 버전을 포함하여 특정 버전을 요청할 수 있습니다. 예:
https://astral.sh/uv/0.7.15/install.sh
.
- 대안: pip을 통한 설치 (Python이 설치되어 있는 경우)
pip install uv
참고: 이 방법은 시스템 전체에 접근하는 것이 아니라면 권장되지 않습니다. 시스템 Python 환경을 복잡하게 만들 수 있습니다.
- pipx를 통한 설치 (사용자 범위의 고립된 설치)
pipx install uv
이 방법은 이미 pipx
를 사용하는 경우 전역 접근에 더 깔끔한 방법입니다.
시작하기
설치 확인 - 실행:
uv
설치된 uv가 확인되고 준비가 되어 있음을 보여주는 도움 메뉴가 표시됩니다.
가상 환경 생성 및 활성화
- 가상 환경 생성:
uv venv test
- Linux/macOS에서 활성화:
source test/bin/activate
- Windows에서 활성화:
.\test\Scripts\activate
이제 uv pip install
을 사용하여 이 환경에서 패키지를 설치할 수 있습니다.
새로운 프로젝트 초기화
uv init
이 명령어는 프로젝트의 pyproject.toml
과 .gitignore
을 생성합니다.
의존성 추가
패키지 추가:
uv add
이 명령어는 pyproject.toml
을 업데이트하고 락파일을 생성하거나 업데이트합니다.
의존성 동기화
환경에서 모든 의존성을 설치:
uv sync
또는 pip 호환 인터페이스 사용:
uv pip install
이 명령어는 락파일에 따라 모든 의존성을 설치합니다.
스크립트 실행
사용:
uv run script.py
이 명령어는 스크립트의 환경과 의존성을 자동으로 관리합니다.
쉘 통합 (선택 사항)
더 부드러운 워크플로우를 위해 .zshrc
또는 .bashrc
에 쉘 통합을 추가하여 기본 가상 환경을 자동으로 활성화하고 pip
을 uv pip
으로 별칭을 지정할 수 있습니다.
이 단계를 통해 uv를 설치하고 Python 프로젝트를 속도와 편의성으로 관리할 준비가 되었습니다.
특정 Python 버전 설치
uv를 사용하여 특정 Python 버전을 설치하고 프로젝트에 관리할 수 있습니다.
- 최신 안정 버전의 Python 설치:
이 명령어는 최신 안정 버전의 Python을 다운로드하고 설치합니다.uv python install
- 특정 버전 설치:
이 명령어는 Python 3.12의 최신 패치 릴리스(예: 3.12.3)를 설치합니다.uv python install 3.12
- 정확한 패치 버전 설치:
이 명령어는 정확히 Python 3.12.3을 설치합니다.uv python install 3.12.3
- 여러 버전 설치:
이 명령어는 Python 3.9, 3.10, 3.11을 설치합니다.uv python install 3.9 3.10 3.11
- 제약 조건에 맞는 버전 설치:
이 명령어는 프로젝트의 Python 버전 요구사항을 변경합니다.uv python install '>=3.8,=3.11"
추가 정보
자동 다운로드: 기본적으로 uv는 시스템에 해당 Python 버전이 없을 경우 자동으로 다운로드하고 설치합니다.
시스템 Python: uv는 기존 Python 설치가 있을 경우 이를 사용하거나, --no-managed-python
플래그를 사용하여 시스템 Python을 강제로 사용할 수 있습니다.
업그레이드: uv로 관리되는 Python 버전을 최신 패치 릴리스로 업그레이드하려면:
uv python upgrade 3.12
또는 모든 설치된 버전을 업그레이드하려면:
uv python upgrade
마이너 버전 간 업그레이드(예: 3.12에서 3.13으로)는 지원되지 않습니다.
요약하자면, uv는 프로젝트에서 특정 Python 버전을 설치, 관리 및 사용하는 데 유연하고 강력한 도구를 제공합니다.
UV가 다양한 시스템에서 사용 가능한 Python 인터프리터를 어떻게 발견하는가
UV는 다양한 시스템에서 사용 가능한 Python 인터프리터를 잘 정의된 위치를 확인하고 각 후보에 대해 버전 메타데이터를 쿼리함으로써 발견합니다. 이는 다음과 같이 작동합니다:
- 관리되는 Python 설치:
UV는 먼저UV_PYTHON_INSTALL_DIR
환경 변수로 지정된 디렉터리에서 자신의 관리되는 Python 버전을 확인합니다. - 시스템 PATH:
macOS 및 Linux에서 UV는 시스템PATH
에 나열된 디렉터리에서python
,python3
, 또는python3.x
(x는 버전 번호)로 명명된 실행 파일을 확인합니다. Windows에서는python.exe
를 확인합니다. - Windows 전용 위치:
Windows에서는 UV가 Windows 레지스트리와 Microsoft Store의 Python 인터프리터를py --list-paths
의 출력을 사용하여 확인합니다. - 가상 환경:
가상 환경이 활성화되거나 지정된 경우, UV는 다른 위치에서 검색하기 전에 해당 환경의 인터프리터와의 호환성을 확인합니다. - 메타데이터 쿼리:
각 발견된 실행 파일은 버전 메타데이터를 쿼리합니다. 요청된 버전(또는 버전 제약 조건)에 맞는 실행 파일만 고려됩니다. 실행 파일이 아닌 파일은 무시됩니다. - 우선순위 및 대체:
기본적으로 UV는 시스템 Python 설치를 선호하지만, 관리되는 버전 또는 시스템 버전만 사용하도록 설정을 조정할 수 있습니다. 적절한 인터프리터가 발견되지 않으면 UV는 필요한 버전을 다운로드하고 설치할 수 있습니다.
이 견고한 발견 프로세스는 UV가 다양한 운영 체제와 환경에서 올바른 Python 인터프리터를 신뢰성 있게 찾고 사용할 수 있도록 보장합니다.