Ringkasan Utama
uv adalah package dan project manager Python yang sangat cepat, ditulis dalam Rust oleh Astral, pembuat Ruff. Ia 10 hingga 100 kali lebih cepat dari pip dan menggantikan pip, pip-tools, virtualenv, pipx, poetry, serta pyenv dengan satu binary statis yang menangani dependensi, lockfile, virtual environment, versi Python, dan alat command-line.
Selama satu dekade, packaging Python terpecah menjadi rak berisi alat-alat berfungsi tunggal. Anda memakai pyenv untuk mendapatkan interpreter yang tepat, venv atau virtualenv untuk mengisolasinya, pip untuk memasang ke dalamnya, pip-tools untuk mengunci lockfile, pipx untuk menjalankan CLI mandiri, dan poetry atau hatch untuk mengelola proyeknya sendiri. Masing-masing punya konfigurasi, cache, dan caranya sendiri yang lambat. Saya pernah membimbing engineer yang menghabiskan satu sore penuh hanya untuk merakit tumpukan ini sebelum menulis satu baris kode.
uv meringkas seluruh rak itu menjadi satu binary. Astral, tim di balik linter Ruff, merilisnya pada Februari 2024 dan ia menyebar di dunia Python lebih cepat dari alat mana pun yang saya ingat. Ditulis dalam Rust, dikirim sebagai satu executable statis tanpa memerlukan Python-nya sendiri, dan cukup cepat sehingga kecepatannya mengubah cara Anda bekerja, bukan sekadar memangkas beberapa detik dari build.
Apa itu uv dan cara memasangnya
uv adalah pengganti drop-in yang bisa Anda adopsi secara bertahap. Pemasangannya berupa satu skrip atau satu baris perintah package, dan ia tidak membutuhkan apa pun lagi di mesin untuk berfungsi. Di laptop saya dan di CI, saya memakai installer standalone karena tidak bergantung pada Python yang sudah ada, yang penting ketika uv justru menjadi alat yang memasang Python untuk Anda.
# Install uv on macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install uv on Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or install it with pipx / pip
pipx install uv
pip install uv
# Keep it current
uv self updateAntarmuka pip yang drop-in
Cara paling minim hambatan untuk mencoba uv adalah antarmuka pip-nya. Setiap perintah yang sudah Anda kenal mendapat awalan uv dan flag yang sama: uv pip install, uv pip compile, uv pip sync, dan uv venv. Anda tetap memakai file requirements dan alur kerja Anda, tetapi resolusi serta pemasangan berjalan 10 hingga 100 kali lebih cepat karena uv memparalelkan unduhan dan melakukan caching agresif lintas proyek. Astral mengukur 8 hingga 10 kali lebih cepat dari pip tanpa cache, dan 80 hingga 115 kali lebih cepat dengan cache hangat saat membuat ulang environment.
# Drop-in pip interface β same flags, 10-100x faster
uv venv # create .venv in milliseconds
uv pip install "fastapi[standard]"
uv pip install -r requirements.txt
# pip-tools style compile + sync, now built in
uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txtMulailah dengan uv pip dan uv venv pada proyek yang sudah ada sebelum berkomitmen ke manajemen proyek penuh. Ini pertukaran tanpa risiko: file requirements, hasil resolusi, dan tata letak virtual environment semuanya kompatibel, jadi Anda langsung mendapat keuntungan kecepatan dan bisa memutuskan soal pyproject.toml nanti.
Manajemen proyek penuh dengan pyproject.toml
Pada Agustus 2024 Astral mengirim separuh kedua uv: manajemen proyek menyeluruh yang bersaing langsung dengan poetry. uv init menyiapkan proyek dengan pyproject.toml berbasis standar. uv add dan uv remove menyunting file itu dan memperbarui uv.lock yang universal dan lintas platform dalam satu langkah. uv sync membuat environment cocok persis dengan lockfile, dan uv run menjalankan perintah di dalam environment itu tanpa perlu mengaktifkannya secara manual.
# Start a managed project (writes pyproject.toml)
uv init myapp
cd myapp
# Add / remove deps β updates pyproject.toml AND uv.lock
uv add fastapi
uv add --dev pytest ruff
uv remove requests
# Resolve the lockfile, then materialize the environment
uv lock
uv sync
# Run code in the project env β no "activate" needed
uv run python main.py
uv run pytestLockfile adalah bagian yang paling saya pedulikan dalam tim. uv.lock diselesaikan agar lintas platform, sehingga lockfile yang sama menghasilkan set dependensi yang sama di CI Linux, di Mac, dan di mesin Windows. Astral menggambarkan keseluruhannya sebagai Cargo untuk Python, dan perbandingan itu tepat: dalam benchmark mereka uv menyelesaikan proyek Transformers dalam 7,48 detik tanpa cache dibanding 47,91 detik milik poetry, dan 0,14 detik dengan cache dibanding 4,32 detik milik poetry.
Versi Python dan alat, tanpa perlu pyenv atau pipx
uv juga mengelola interpreter itu sendiri. uv python install mengunduh dan mengelola build Python standalone, dan uv python pin menulis file versi sehingga proyek selalu memakai interpreter yang Anda pilih. Untuk alat command-line ada uvx, singkatan dari uv tool run yang menjalankan alat di environment sekali pakai seperti pipx atau npx, ditambah uv tool install untuk menaruh satu alat di PATH secara permanen. Itu pyenv dan pipx yang dipensiunkan dalam dua subperintah.
# Install and pin Python versions β no pyenv required
uv python install 3.11 3.12 3.13
uv python pin 3.12
# Run CLI tools in throwaway envs (like pipx / npx)
uvx ruff check .
# Install a tool onto your PATH for good
uv tool install ruffSatu alat menggantikan enam
Keuntungan sesungguhnya adalah konsolidasi. Satu binary, satu cache, dan satu model mental menggantikan tumpukan yang dulu butuh perawatan terus-menerus. Secara konkret, uv mencakup:
- pip dan pip-tools β memasang package dan mengompilasi requirements yang dikunci, lewat uv pip install dan uv pip compile.
- virtualenv dan venv β membuat environment terisolasi dengan uv venv, kira-kira 80 kali lebih cepat dari python -m venv.
- pyenv β mengunduh dan mengganti versi Python dengan uv python install dan uv python pin.
- pipx dan poetry β menjalankan alat CLI sekali pakai dengan uvx dan mengelola proyek dengan uv init, add, lock, sync, dan run.
uv masih muda dan bergerak cepat, dan ia bukan standar formal PSF. Kunci versi uv di CI agar pembaruan latar tidak dapat mengubah resolusi Anda, commit uv.lock, dan pastikan index privat, build backend kustom, atau plugin yang diandalkan tim Anda sudah didukung sebelum Anda menghapus poetry dari setiap repo.
uv versus pip dan poetry
| Aspek | pip plus venv | Poetry | uv |
|---|---|---|---|
| Ditulis dalam | Python | Python | Rust |
| Kecepatan pemasangan relatif | Dasar | Mirip pip | 10 hingga 100x lebih cepat |
| Cakupan | Hanya pemasangan | Proyek plus dependensi | Pemasangan, proyek, Python, alat |
| Lockfile | Tidak ada bawaan | poetry.lock | uv.lock, lintas platform |
| Manajemen versi Python | Tidak β perlu pyenv | Tidak β perlu pyenv | Bawaan |
Kini saya memulai setiap proyek Python baru dengan uv init dan memakai uv pip pada proyek lama yang belum saya migrasikan. Jalur amannya bertahap: adopsi antarmuka pip untuk kecepatan hari ini, pindah ke pyproject.toml dan uv.lock ketika Anda ingin manajemen proyek yang reprodusibel, dan biarkan uv mengambil alih versi Python serta tooling paling akhir. Setiap langkah berdiri sendiri, dan tidak satu pun mengunci Anda.

