Tutorial Mengelola Proyek Python Modern dengan uv: Ganti pip dan venv Sekarang
AW
Axel W

Dipublikasikan 14 Juli 2026

Tutorial Mengelola Proyek Python Modern dengan uv: Ganti pip dan venv Sekarang

Python dikenal sebagai bahasa yang ramah pemula, tapi ekosistem tooling-nya seringkali membingungkan. Kamu perlu pip untuk install package, venv atau virtualenv untuk environment, pip-tools untuk lock dependency, dan pyenv untuk manajemen versi Python. Kombinasi ini berfungsi, tapi lambat dan fragmentasi.

Masuk uv, all-in-one tool dari Astral yang ditulis dalam Rust. uv menggabungkan package installer, resolver, virtual environment manager, dan Python version manager dalam satu binary yang sangat cepat. Artikel ini adalah panduan praktis untuk beralih dari workflow pip tradisional ke uv.

Mengapa Developer Beralih ke uv

Kecepatan adalah alasan utama. uv menggunakan algoritma resolver modern dan caching global yang membuat instalasi package bisa 10-100x lebih cepat dibanding pip. Selain itu, uv menghasilkan uv.lock yang menjamin reproducibility: setiap developer di timmu akan mendapatkan versi dependency yang identik.

uv juga tidak memerlukan Python yang sudah terinstal untuk mengelola environment. Ia bisa mengunduh dan mengelola versi Python secara mandiri, mirip dengan pyenv tapi lebih terintegrasi.

Langkah 1: Instalasi uv

Instalasi uv sangat sederhana. Di Linux dan macOS, jalankan command berikut di terminal:

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

Untuk Windows, gunakan PowerShell:

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

Setelah selesai, restart terminal dan verifikasi instalasi:

uv --version

Kamu akan melihat versi uv yang terpasang, misalnya uv 0.6.0.

Langkah 2: Inisialisasi Proyek Baru

uv memiliki konsep project yang mirip dengan Cargo di Rust atau Poetry. Untuk membuat proyek baru, jalankan:

uv init my-project
cd my-project

Command ini akan membuat struktur direktori standar: pyproject.toml, direktori src, dan file hello.py. File pyproject.toml berisi metadata proyek dan daftar dependency.

Berbeda dengan pip yang memerlukan requirements.txt terpisah, uv menggunakan pyproject.toml sebagai sumber kebenaran tunggal.

Langkah 3: Menambahkan Dependency

Menambahkan package di uv tidak perlu edit file secara manual. Cukup gunakan command uv add:

uv add requests pandas numpy

uv akan otomatis menyelesaikan versi terbaru yang kompatibel, mengupdate pyproject.toml, dan menyinkronkan uv.lock. Lockfile ini berisi hash kriptografi dari setiap package, memastikan instalasi di mesin lain persis sama.

Jika kamu membutuhkan package hanya untuk development, seperti pytest atau black, tambahkan flag --dev:

uv add pytest black --dev

Langkah 4: Menjalankan Script dan Environment

uv tidak mengharuskanmu mengaktifkan virtual environment secara manual. Untuk menjalankan script Python dalam environment proyek, cukup ketik:

uv run python src/hello.py

Command uv run akan otomatis mendeteksi pyproject.toml di direktori saat ini, memastikan Python interpreter dan dependency yang benar digunakan. Ini menghilangkan kebutuhan source venv/bin/activate yang sering dilupakan.

Untuk menjalankan command lain dalam context environment, gunakan:

uv run pytest

Langkah 5: Lockfile dan Reproducibility

Salah satu kelemahan requirements.txt adalah ia tidak selalu mencatat dependency transitif dengan presisi. uv mengatasi ini dengan uv.lock yang dihasilkan otomatis setiap kali dependency berubah.

Untuk mensinkronkan environment lokal dengan lockfile:

uv sync

Command ini memastikan versi package di mesin lokalmu cocok persis dengan yang tercatat di uv.lock. Timmu cukup menjalankan uv sync setelah clone repository tanpa perlu memikirkan versi Python atau package yang terinstal secara global.

Migrasi dari pip ke uv

Jika kamu memiliki proyek lama dengan requirements.txt, migrasi ke uv sangat mudah:

uv init
uv add -r requirements.txt

uv akan membaca requirements.txt dan mengkonversinya ke format pyproject.toml serta menghasilkan uv.lock. Setelah itu, kamu bisa menghapus requirements.txt karena sudah tidak diperlukan lagi.

Kesimpulan

uv bukan sekadar package manager yang lebih cepat. Ia menyederhanakan seluruh workflow Python development dengan menyatukan instalasi, environment management, dan dependency resolution dalam satu tool. Bagi developer yang bekerja dalam tim, lockfile bawaan uv adalah game changer untuk menghindari masalah works on my machine.

Dokumentasi lengkap uv tersedia di docs.astral.sh/uv. Jika kamu belum mencoba, instal sekarang dan rasakan perbedaannya dalam proyek Python berikutnya.