Skip to content

uv

Rust로 작성된 매우 빠른 파이썬 패키지 및 프로젝트 관리자.

벤치마크 결과를 보여주는 막대 그래프.

벤치마크 결과를 보여주는 막대 그래프.

캐시가 준비된 상태에서 Trio의 의존성을 설치하는 과정.

주요 특징

uv는 Ruff를 만든 Astral이 지원한다.

설치

공식 독립형 설치 프로그램을 사용해 uv를 설치한다:

=== "macOS와 Linux"

```console
$ curl -LsSf https://astral.sh/uv/install.sh | sh
```

=== "Windows"

```console
$ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

설치가 완료되면 첫걸음을 확인하거나 간단한 개요를 읽어보자.

Tip

uv는 pip, Homebrew 등 다양한 방법으로도 설치할 수 있다. 모든 설치 방법은 설치 페이지에서 확인할 수 있다.

프로젝트 관리

uv는 ryepoetry와 유사하게 프로젝트 의존성과 환경을 관리한다. 락 파일, 워크스페이스 등의 기능을 지원한다:

$ uv init example
`example` 프로젝트를 `/home/user/example`에 초기화함

$ cd example

$ uv add ruff
.venv에 가상 환경 생성
170ms 만에 2개의 패키지 해결
   file:///home/user/example에서 example @ 빌드
627ms 만에 2개의 패키지 준비
1ms 만에 2개의 패키지 설치
 + file:///home/user/example에서 example==0.1.0
 + ruff==0.5.4

$ uv run ruff check
모든 체크 통과!

$ uv lock
0.33ms 만에 2개의 패키지 해결

$ uv sync
0.70ms 만에 2개의 패키지 해결
0.02ms 만에 1개의 패키지 검사

시작하기 위해 프로젝트 가이드를 참고한다.

uv는 uv로 관리되지 않는 프로젝트도 빌드하고 배포할 수 있다. 자세한 내용은 패키징 가이드를 확인한다.

스크립트 관리

uv는 단일 파일 스크립트의 의존성과 환경을 관리한다.

새로운 스크립트를 생성하고, 의존성을 선언하는 인라인 메타데이터를 추가한다:

$ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py

$ uv add --script example.py requests
Updated `example.py`

그런 다음, 스크립트를 격리된 가상 환경에서 실행한다:

$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
<Response [200]>

시작 가이드는 스크립트 가이드를 참고한다.

도구

uv는 pipx와 유사하게 Python 패키지가 제공하는 커맨드라인 도구를 실행하고 설치한다.

uvx(uv tool run의 별칭)를 사용해 임시 환경에서 도구를 실행할 수 있다:

$ uvx pycowsay 'hello world!'
Resolved 1 package in 167ms
Installed 1 package in 9ms
 + pycowsay==0.0.0.2
  """

  ------------
< hello world! >
  ------------
   \   ^__^
    \  (oo)\_______
       (__)\       )\/\
           ||----w |
           ||     ||

uv tool install을 사용해 도구를 설치할 수 있다:

$ uv tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
 + ruff==0.5.4
Installed 1 executable: ruff

$ ruff --version
ruff 0.5.4

시작하려면 도구 가이드를 참고한다.

파이썬 버전 관리

uv는 파이썬을 설치하고 버전 간 빠른 전환을 지원한다.

여러 파이썬 버전을 동시에 설치하려면:

$ uv python install 3.10 3.11 3.12
Searching for Python versions matching: Python 3.10
Searching for Python versions matching: Python 3.11
Searching for Python versions matching: Python 3.12
Installed 3 versions in 3.42s
 + cpython-3.10.14-macos-aarch64-none
 + cpython-3.11.9-macos-aarch64-none
 + cpython-3.12.4-macos-aarch64-none

필요한 파이썬 버전을 다운로드하려면:

$ uv venv --python 3.12.0
Using CPython 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

$ uv run --python pypy@3.8 -- python
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>

현재 디렉토리에서 특정 파이썬 버전을 사용하려면:

$ uv python pin 3.11
Pinned `.python-version` to `3.11`

파이썬 설치 가이드를 참고하여 시작해 보자. 파이썬 설치 가이드

pip 인터페이스

uv는 pip, pip-tools, virtualenv 명령어를 대체할 수 있는 툴을 제공한다. uv는 기존 인터페이스에 의존성 버전 오버라이드, 플랫폼 독립적 해결, 재현 가능한 해결, 대체 해결 전략 등 고급 기능을 추가한다.

기존 워크플로우를 변경하지 않고 uv로 마이그레이션하면 10~100배의 속도 향상을 경험할 수 있다. uv pip 인터페이스를 통해 이를 확인할 수 있다.

플랫폼 독립적 요구사항 파일을 컴파일하려면:

$ uv pip compile docs/requirements.in \
   --universal \
   --output-file docs/requirements.txt
Resolved 43 packages in 12ms

가상 환경을 생성하려면:

$ uv venv
Using CPython 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

잠긴 요구사항을 설치하려면:

$ uv pip sync docs/requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
 + babel==2.15.0
 + black==24.4.2
 + certifi==2024.7.4
 ...

시작하려면 pip 인터페이스 문서를 참고한다.

더 알아보기

첫걸음을 확인하거나 바로 가이드로 이동해 uv를 사용해 보세요.