Dokumentasi uv
uv adalah satu tool yang menggantikan pip, virtualenv, pyenv, pip-tools, dan pipx sekaligus. Halaman ini merangkum peta besarnya.
Intisari
uvmenggabungkan lima tool lama jadi satu: package manager, virtual environment, version manager, lockfile, dan runner.- Ditulis dengan Rust โ 10โ100x lebih cepat dari
pip, dan itu terasa setiap hari. - Kamu tidak pernah perlu
source .venv/bin/activatelagi.uv runyang mengurus. - Cukup hafal 6 perintah:
init,add,remove,run,sync,python install. - Bagian dokumentasi yang wajib: Getting started lalu Guides โ Working on projects. Sisanya untuk nanti.
Kenapa uv ada
Selama belasan tahun, Python tidak punya satu tool resmi untuk mengelola proyek. Yang ada adalah tumpukan tool yang masing-masing menyelesaikan satu potongan masalah, dan kamu harus menyatukannya sendiri:
| Tool lama | Mengurus | Sekarang |
|---|---|---|
pip | Install package | uv |
venv / virtualenv | Lingkungan terisolasi | |
pyenv | Versi interpreter Python | |
pip-tools / poetry | Kunci versi dependency (lockfile) | |
pipx | Jalankan tool CLI tanpa install permanen |
uv mengambil kelima peran itu. Itulah alasan roadmap ini menyuruh kamu melewati semua tutorial
yang masih mengajarkan python -m venv + pip install -r requirements.txt.
Bukan karena cara lama itu salah, tapi karena kamu akan membuang waktu belajar tiga tool untuk satu hasil.
Model mentalnya: proyek, bukan environment
Ini pergeseran cara berpikir yang penting. Dengan pip, unit kerjanya adalah
environment โ kamu mengaktifkan sebuah venv, lalu perintah pip dan python
menempel ke venv aktif itu. Kalau lupa mengaktifkan, package-nya masuk ke Python sistem.
Dengan uv, unit kerjanya adalah direktori proyek. Selama ada
pyproject.toml di folder itu, uv tahu venv mana yang dipakai dan membuatnya otomatis
kalau belum ada. Tidak ada state tersembunyi berupa "shell mana yang lagi aktif".
# Cara lama โ tiga langkah, satu di antaranya gampang lupa
python -m venv .venv
source .venv/bin/activate # โ lupa ini = package nyasar
pip install httpx
# Cara uv โ satu langkah, tanpa state
uv add httpx
Anatomi sebuah proyek uv
proyek-pertama/
โโโ pyproject.toml # deklarasi: nama proyek, versi Python, daftar dependency
โโโ uv.lock # hasil resolusi: versi persis tiap package + hash-nya
โโโ .venv/ # dibuat & dikelola uv, jangan di-commit
โโโ .python-version # versi interpreter untuk proyek ini
โโโ main.py
Dua file yang penting kamu bedakan:
pyproject.tomlโ apa yang kamu minta. Ditulis manusia (atau lewatuv add). Isinya longgar:httpx>=0.27. Di-commit ke git.uv.lockโ apa yang benar-benar dipakai. Ditulisuv. Isinya persis:httpx==0.28.1plus semua dependency turunannya. Di-commit juga โ inilah yang membuat kodemu jalan sama persis di laptop orang lain.
Jangan pakai requirements.txt lagi untuk proyek baru. File itu mencampur dua peran
di atas jadi satu, dan tidak menyimpan hash. Kalau kamu menerima proyek lama yang pakai
requirements.txt, uv bisa membacanya:
uv add -r requirements.txt.
Alur kerja harian
uv init proyek-baru # bikin pyproject.toml + struktur dasar
cd proyek-baru
uv add anthropic httpx # tambah dependency (venv dibuat otomatis kalau perlu)
uv add --dev pytest ruff # dependency yang cuma dipakai saat ngoding
uv remove httpx # hapus
uv run main.py # jalankan script
uv run pytest # jalankan tool dari dependency proyek
uvx ruff check # jalankan tool SEKALI TANPA menambahkannya ke proyek
uv sync # samakan .venv dengan uv.lock (dipakai di CI & setelah git pull)
uv lock --upgrade # naikkan versi dalam batas yang diizinkan pyproject.toml
uv run vs uvx
Dua perintah ini sering tertukar. Bedanya sederhana:
uv run | uvx | |
|---|---|---|
| Ambil tool dari | Dependency proyekmu | Internet, ke cache sementara |
Masuk ke pyproject.toml? | Ya (harus di-add dulu) | Tidak |
| Cocok untuk | pytest, script aplikasimu | ruff, mypy, tool sekali pakai |
Mengelola versi Python
uv juga memasang interpreter Python-nya sendiri โ kamu tidak perlu menyentuh Python bawaan
sistem operasi (yang di Linux sering dipakai OS dan berbahaya kalau diutak-atik).
uv python install 3.13 # pasang interpreter
uv python list # lihat yang tersedia & terpasang
uv python pin 3.13 # kunci versi untuk proyek ini (bikin .python-version)
Peta dokumentasi resmi
Dokumentasi uv luas. Urutan baca yang efisien untuk roadmap ini:
- Getting started โ Installation & First steps โ 10 menit, wajib.
- Guides โ Working on projects โ inti dari cara kerja harian. Ini yang paling penting.
- Guides โ Using tools โ memahami
uvxdan tool sekali pakai. - Guides โ Integration โ Docker โ nanti saja, saat Fase 6.
- Concepts, Reference, Workspaces โ lewati. Buka hanya saat butuh.
Kesalahan yang sering terjadi
| Gejala | Penyebab | Solusi |
|---|---|---|
ModuleNotFoundError padahal sudah di-install | Kamu jalankan python main.py, bukan uv run main.py | Selalu pakai uv run |
| Rekan tim dapat versi package berbeda | uv.lock tidak di-commit | Commit uv.lock, hapus .venv/ dari git |
| CI lambat / versi tidak konsisten | Pakai uv sync polos | Pakai uv sync --frozen di CI โ gagal kalau lock tidak sinkron |
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.