uv: Package Manager Python Rust Pengganti pip

Foto oleh Nemuel Sereti on Pexels
uv adalah package dan project manager Python yang sangat cepat, ditulis dalam Rust oleh Astral, tim di balik linter Ruff. Ia dikirim sebagai satu binary statis dan menyatukan tugas pip, pip-tools, virtualenv, pipx, poetry, dan pyenv menjadi satu alat untuk memasang package, mengelola proyek dan lockfile, serta menangani versi Python.
Benchmark Astral melaporkan uv 8 hingga 10 kali lebih cepat dari pip tanpa cache dan 80 hingga 115 kali lebih cepat dengan cache hangat saat membuat ulang environment. Dokumentasinya merangkum ini sebagai 10 hingga 100 kali lebih cepat secara keseluruhan. Kecepatannya berasal dari unduhan paralel, resolver Rust, dan cache bersama yang agresif lintas proyek.
Ya. Sejak Agustus 2024 uv menawarkan manajemen proyek penuh dengan pyproject.toml dan uv.lock lintas platform melalui uv init, add, lock, sync, dan run, mencakup peran poetry. Ia juga memasang dan mengunci interpreter dengan uv python install dan uv python pin, yang menggantikan pyenv. Pastikan index privat dan build backend Anda didukung sebelum migrasi penuh.
Sebagian besar ya, melalui antarmuka pip-nya. Perintah seperti uv pip install, uv pip compile, uv pip sync, dan uv venv menyerupai pip dan pip-tools dengan flag yang sama dan kompatibel dengan file requirements yang ada. Anda langsung mendapat keuntungan kecepatan pada proyek yang ada tanpa mengadopsi manajemen proyek atau alur pyproject.toml uv.
uv dibuat oleh Astral, perusahaan yang juga membuat linter Ruff, dan pertama dirilis pada Februari 2024. Ia open source dan berlisensi ganda Apache 2.0 atau MIT di GitHub pada astral-sh/uv, jadi gratis dipakai untuk proyek komersial maupun pribadi. Ia ditulis dalam Rust dan didistribusikan sebagai binary mandiri.

Foto oleh Nemuel Sereti on Pexels
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.
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 updateCara 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.
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.
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 ruffKeuntungan sesungguhnya adalah konsolidasi. Satu binary, satu cache, dan satu model mental menggantikan tumpukan yang dulu butuh perawatan terus-menerus. Secara konkret, uv mencakup:
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.
| 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.