UV: Package Manager Python Modern yang 10-100x Lebih Cepat

# UV: Package Manager Python Modern yang 10-100x Lebih Cepat Mengelola dependensi Python selalu menjadi tantangan tersendiri. Kita perlu menginstal pip, virtualenv, pyenv, dan poetry secara terpisah,...

By Ruby Abdullah · · tutorial
UVPythonPackage ManagerVirtual EnvironmentDevOps

UV: Package Manager Python Modern yang 10-100x Lebih Cepat

Mengelola dependensi Python selalu menjadi tantangan tersendiri. Kita perlu menginstal pip, virtualenv, pyenv, dan poetry secara terpisah, lalu mengonfigurasi masing-masing tool. UV hadir sebagai solusi all-in-one yang menggantikan semua tool tersebut dengan performa 10-100x lebih cepat. Ditulis dalam Rust oleh tim Astral (pembuat Ruff), UV adalah package manager Python generasi baru yang mengubah cara kita bekerja dengan ekosistem Python.

Dalam tutorial ini, kita akan mempelajari UV secara komprehensif mulai dari instalasi, manajemen proyek, virtual environment, hingga contoh praktis membangun proyek ML dari nol.

Mengapa UV?

Sebelum masuk ke teknis, mari pahami mengapa UV layak dipertimbangkan:

  • Kecepatan luar biasa: 10-100x lebih cepat dari pip berkat implementasi Rust dan caching global
  • All-in-one: Menggantikan pip, pip-tools, virtualenv, pyenv, dan poetry dalam satu binary
  • Lockfile bawaan: Reproducible builds tanpa konfigurasi tambahan
  • Manajemen versi Python: Install dan switch versi Python tanpa pyenv
  • Cross-platform: Bekerja konsisten di Linux, macOS, dan Windows
  • Drop-in replacement: Kompatibel dengan ekosistem pip yang sudah ada

Instalasi UV

Linux dan macOS

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

Windows (PowerShell)

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

Menggunakan pip (alternatif)

pip install uv

Menggunakan Homebrew (macOS)

brew install uv

Verifikasi instalasi:

uv --version

Update UV

uv self update

Membuat Proyek Baru dengan uv init

UV menyediakan cara mudah untuk memulai proyek Python baru:

uv init my-project

cd my-project

Perintah ini akan membuat struktur proyek berikut:

my-project/

├── .python-version

├── README.md

├── hello.py

└── pyproject.toml

File pyproject.toml yang dihasilkan:

[project]

name = "my-project"

version = "0.1.0"

description = "Add your description here"

readme = "README.md"

requires-python = ">=3.12"

dependencies = []

Opsi Inisialisasi

# Membuat proyek sebagai library (dengan src layout)

uv init --lib my-library

Membuat proyek sebagai aplikasi

uv init --app my-app

Menentukan versi Python minimum

uv init --python 3.11 my-project

Membuat proyek di direktori saat ini

uv init

Untuk proyek library, strukturnya akan berbeda:

my-library/

├── .python-version

├── README.md

├── pyproject.toml

└── src/

└── mylibrary/

├── init.py

└── py.typed

Manajemen Dependensi

Menambahkan Dependensi

# Menambahkan package

uv add requests

Menambahkan dengan versi spesifik

uv add "pandas>=2.0,<3.0"

Menambahkan multiple packages sekaligus

uv add numpy scikit-learn matplotlib

Menambahkan development dependency

uv add --dev pytest ruff mypy

Menambahkan optional dependency group

uv add --group docs sphinx sphinx-rtd-theme

Setiap kali menjalankan uv add, UV akan secara otomatis:

  • Menambahkan package ke pyproject.toml
  • Resolve seluruh dependency tree
  • Update uv.lock
  • Install package ke virtual environment
  • Menghapus Dependensi

    # Menghapus package
    

    uv remove requests

    Menghapus dev dependency

    uv remove --dev mypy

    Melihat Dependency Tree

    uv tree
    

    Output contoh:

    my-project v0.1.0
    

    ├── numpy v1.26.4

    ├── pandas v2.2.1

    │ ├── numpy v1.26.4

    │ ├── python-dateutil v2.9.0

    │ │ └── six v1.16.0

    │ ├── pytz v2024.1

    │ └── tzdata v2024.1

    └── scikit-learn v1.4.1

    ├── joblib v1.3.2

    Artikel Terkait

    Tutorial LangChain: Framework Paling Populer untuk Membangun Aplikasi LLM

    Tutorial LangChain: Framework Paling Populer untuk Membangun Aplikasi LLM LangChain adalah framework open-source yang di...

    Tutorial Lengkap Google Gemini API dengan Python: Dari Dasar hingga Mahir

    Tutorial Lengkap Google Gemini API dengan Python: Dari Dasar hingga Mahir Google Gemini API adalah salah satu API AI pal...

    Tutorial LitServe: Framework Serving Model AI yang Cepat dan Mudah

    Tutorial LitServe: Framework Serving Model AI yang Cepat dan Mudah Pendahuluan LitServe adalah framework open-source dar...

    Tutorial ClearML: Platform MLOps Open-Source untuk Experiment Tracking dan Pipeline Automation

    Tutorial ClearML: Platform MLOps Open-Source untuk Experiment Tracking dan Pipeline Automation ClearML adalah platform M...