[Python] Uv에 대하여

2026. 4. 9. 12:12·Language/Python
728x90

Uv는 Rust 기반의 패키지 관리 프로그램으로, Python의 여러 버전을 하나의 머신에서 사용할 수 있게 관리해줍니다.

 

Python은 역사가 오래된 언어이기 때문에, pip나 conda와 같은 대표적인 패키지 관리 프로그램이 등장하기 이전에도 여러 종류의 프로그램이 존재했습니다. 이들은 모두 기능이나 특징이 조금씩 달라서, 단일화된 Python 생태계를 유지하는데 어려움을 주게 되었습니다.

 

이런 맥락에서 등장한 Uv는 기존의 패키지 관리 프로그램들을 하나로 통합하는 것을 목표로 만들어졌습니다. 우리가 pip나 conda에서 하던 것 처럼 패키지와 라이브러리를 쉽게 설치할 수 있을 뿐 아니라, 가상환경을 생성하거나 Python의 버전 또한 다양하게 설치하고 전환할 수 있습니다. 그러면서도 Rust의 특징을 살려 패키지 설치 및 의존성 해결 속도가 매우 빠른 것을 강점으로 내세우고 있습니다. 공식 벤치마크에서는 pip보다 10배에서 최대 100배 까지 빠르다고 묘사하고 있습니다.

Trio 패키지의 의존성을 해결할 때 소요 시간 비교

범용성과 우수한 처리속도 덕분에 Uv는 현재 차세대 패키지 관리 통합 도구로 주목받고 있습니다.

설치

Windows기준으로, PowerShell에 아래 명령어를 실행합니다.

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

만약 pip가 설치되어 있다면, pip를 이용해 설치할 수도 있습니다.

pip install uv

업데이트는 아래와 같이 실행합니다.

uv self update

uv lock

uv는 의존성을 해결할 때 해당 프로젝트에 존재하는 uv.lock 파일을 참고합니다. uv.lock에는 해당 프로젝트에 어떤 의존성 파일들이 설치되었는지에 대한 정보가 기록되어 있습니다. pip에서의 requirements.txt라고 생각하면 됩니다.

uv.lock을 생성하려면 프로젝트를 초기화해야 합니다.

uv init

초기화시 프로젝트에 대한 정보를 기록한 pyproject.toml 파일이 생성됩니다. 프로젝트의 의존성 파일들이 여기 dependencies 리스트에 기록됩니다.

# pyproject.toml
[project]
name = "rabbit"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "a2a-sdk==0.3.25",
    "aiofile==3.9.0",
    "aiofiles==25.1.0",
    "aiohappyeyeballs==2.6.1",
    ...

이후 pyproject.toml를 기반으로 uv.lock 파일을 생성할 수 있습니다.

uv lock
# uv.lock
version = 1
revision = 3
requires-python = ">=3.13"
resolution-markers = [
    "python_full_version >= '3.14'",
    "python_full_version < '3.14'",
]

[[package]]
name = "a2a-sdk"
version = "0.3.25"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "google-api-core" },
    { name = "httpx" },
    { name = "httpx-sse" },
    { name = "protobuf" },
    { name = "pydantic" },
]
sdist = { url = "https://files.pythonhosted.org/packages/55/83/3c99b276d09656cce039464509f05bf385e5600d6dc046a131bbcf686930/a2a_sdk-0.3.25.tar.gz", hash = "sha256:afda85bab8d6af0c5d15e82f326c94190f6be8a901ce562d045a338b7127242f", size = 270638, upload-time = "2026-03-10T13:08:46.417Z" }
wheels = [
    { url = "https://files.pythonhosted.org/packages/bd/f9/6a62520b7ecb945188a6e1192275f4732ff9341cd4629bc975a6c146aeab/a2a_sdk-0.3.25-py3-none-any.whl", hash = "sha256:2fce38faea82eb0b6f9f9c2bcf761b0d78612c80ef0e599b50d566db1b2654b5", size = 149609, upload-time = "2026-03-10T13:08:44.7Z" },
]

[[package]]
name = "aiofile"
...

uv sync

프로젝트를 clone 하거나 내려받았을 때 의존성을 해결하고자 한다면 아래와 같이 실행합니다.

uv sync

기존의 pip install과 다른 점은, 우선 속도가 훨씬 빠릅니다. 그리고 철저히 uv.lock의 기준을 따라서 추가 설치 뿐만 아니라 버전 수정과 삭제 또한 수행합니다. 좀 더 엄격하게 의존성을 해결한다고 볼 수 있습니다.

uv add

라이브러리를 설치합니다.

uv add [lib1] [lib2] ...

만약 이전에 requirements.txt를 사용해왔다면, 마이그레이션 할 수도 있습니다.

uv add -r requirements.txt

만약 requirements.txt가 없다면, pip freeze를 이용해 의존성 목록을 뽑아낸 다음 일괄 설치할 수 있습니다.

uv pip freeze --exclude-editable | ForEach-Object { uv add $_ }

이때까지 설치한 라이브러리 목록은 list로 확인할 수 있습니다.

uv list

uv python

원하는 버전의 python을 설치하거나, 현재 가상환경에서의 파이썬 버전을 고정할 수 있습니다.

uv python [version]  # 설치
uv python pin [version]  # 버전 고정

 

 

https://docs.astral.sh/uv/

 

uv

An extremely fast Python package and project manager, written in Rust. Installing Trio's dependencies with a warm cache. A single tool to replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and more. 10-100x faster than pip. Provides comprehens

docs.astral.sh

 

 

 

728x90

'Language > Python' 카테고리의 다른 글

[Python] Library | 11. typing  (0) 2026.04.08
[Python] Library | 10. logging  (0) 2026.03.26
[Python] Library | 09. dotenv  (0) 2026.03.26
[Python] Syntax | 04. import  (0) 2026.02.17
[Python] Syntax | 03. Decorator(@)  (0) 2026.02.16
'Language/Python' 카테고리의 다른 글
  • [Python] Library | 11. typing
  • [Python] Library | 10. logging
  • [Python] Library | 09. dotenv
  • [Python] Syntax | 04. import
Rayi
Rayi
  • Rayi
    아카이브
    Rayi
  • 전체
    오늘
    어제
    • 분류 전체보기 (297)
      • CS (40)
        • CV (2)
        • PS (37)
      • Reveiw (19)
        • Paper (19)
        • Github (0)
      • ML (13)
        • Pytorch (5)
      • Language (72)
        • Python (21)
        • JavaScript (32)
        • TypeScript (16)
        • C++ (3)
      • IDE (12)
      • Git (13)
      • Frontend (77)
        • React (8)
        • ReactNative (6)
        • SolidJS (20)
        • CSS (12)
      • Backend (47)
        • DB (18)
        • Node.js (11)
        • Python (3)
      • UI (3)
      • Automation (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    PRISMA
    js
    PyTorch
    SOLID
    CS
    deploy
    modal
    ps
    frontend
    postgresql
    backend
    Git
    ts
    vscode
    CSS
    ReactNative
    GAN
    FastAPI
    mongo
    CV
    react
    Three
    Express
    API
    DB
    ML
    review
    figma
    python
    nodejs
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.5
Rayi
[Python] Uv에 대하여
상단으로

티스토리툴바