4 poin oleh GN⁺ 2025-06-24 | 1 komentar | Bagikan ke WhatsApp
  • uv berbasis Rust dan merupakan alat manajemen paket serta proyek Python yang sangat cepat
  • Dapat menggantikan pip, pip-tools, pipx, poetry, pyenv, virtualenv, dan lainnya dalam satu alat
  • Menawarkan kinerja hingga 10–100 kali lebih cepat, penghematan ruang disk, cache yang kuat, dan dukungan lintas platform
  • Mencakup dukungan lingkungan pengembangan terpadu seperti manajemen skrip, proyek, alat, dan berbagai versi Python
  • Memungkinkan workflow pengembangan Python modern yang dioptimalkan untuk produktivitas pengembang, proyek berskala besar, dan kecepatan kerja tinggi

Pengenalan open source dan poin pembeda

  • uv mengintegrasikan fungsi dari berbagai alat manajemen Python yang ada seperti pip, pip-tools, pipx, poetry, pyenv, virtualenv, twine ke dalam satu alat tunggal
  • Dibangun dengan Rust sehingga performanya sangat unggul, dengan kecepatan instalasi dan sinkronisasi 10–100 kali lebih cepat dibandingkan pip tradisional
  • Menyediakan cache global dan penghapusan duplikasi dependensi untuk optimasi penggunaan disk, serta mendukung CLI yang intuitif dan kompatibilitas pip yang familier
  • Dapat dipasang sebagai executable mandiri di berbagai platform seperti macOS, Linux, Windows
  • Ciri utamanya adalah kemudahan penggunaan melalui metode instalasi mandiri, integrasi dengan pip dan pipx, serta dukungan auto-update bawaan

Fitur utama (Highlights)

  • Dengan satu alat uv, dapat menggantikan berbagai fungsi dari pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, dan lainnya
  • Menyediakan performa instalasi/pembaruan/sinkronisasi 10–100 kali lebih cepat dibandingkan pip yang ada
  • Mendukung manajemen dependensi proyek berbasis lockfile serta workspaces dan universal lockfile
  • Mendukung deklarasi inline dependensi skrip dan eksekusi dengan isolasi lingkungan otomatis
  • Mendukung manajemen/instalasi/pergantian berbagai versi Python
  • Mendukung menjalankan dan memasang alat yang didistribusikan sebagai paket Python (pengganti pipx)
  • Menyediakan kompatibilitas antarmuka pip beserta fitur tambahan (override versi, resolusi independen platform, dll.)
  • Dioptimalkan untuk proyek berskala besar dengan workspace bergaya Cargo
  • Meminimalkan duplikasi dependensi dan mengefisienkan ruang disk dengan cache global
  • Dapat dipasang dan digunakan melalui curl atau pip, pipx bahkan tanpa lingkungan Rust/Python
  • Mendukung multi-platform seperti macOS, Linux, Windows
  • Dibuat oleh tim yang mengembangkan Astral dan Ruff

Manajemen proyek (Project Management)

  • Mendukung secara penuh dependensi, environment, file lock, workspace, dan lain-lain pada tingkat proyek
  • Perintah uv init menginisialisasi proyek secara otomatis dan membuat virtualenv
  • Dengan uv add dapat menambahkan dependensi, dan perintah uv lock serta uv sync otomatis menangani sinkronisasi paket dan audit keamanan
  • Menggantikan kemampuan alat manajemen proyek Python modern seperti Poetry dan Rye, sambil menjamin kinerja pemrosesan yang lebih cepat
  • Juga mendukung build dan publish proyek yang tidak dikelola oleh uv

Manajemen skrip (Scripts)

  • Memungkinkan deklarasi metadata inline dependensi pada skrip satu file
  • Saat skrip dijalankan, mendukung isolasi virtual environment otomatis dan instalasi dependensi
  • Dengan uv add --script, dependensi dapat dikelola per skrip, dan perintah uv run menjalankan skrip dalam lingkungan terisolasi
  • Sangat cocok untuk penggunaan skrip sekali jalan seperti data science/otomatisasi

Manajemen alat (Tools)

  • Dapat memasang dan menjalankan alat CLI berbentuk paket Python seperti pipx
  • Perintah uv tool install dan uvx dapat digunakan untuk lingkungan sementara atau eksekusi global
  • Mendukung pemeriksaan alat yang terpasang, manajemen versi, dan pembaruan

Manajemen versi Python

  • Dapat memasang dan langsung berpindah di antara beberapa versi Python dengan mudah
  • Mendukung pengelolaan berbagai versi secara paralel, dan pengaturan pin .python-version per proyek
  • Implementasi alternatif seperti pypy juga didukung dengan antarmuka yang sama
  • Gunakan perintah seperti uv python install/pin untuk memasang, menetapkan, dan mengaktifkan versi

Antarmuka pip (Pip Interface)

  • Dengan uv pip dan uv venv, dapat sepenuhnya menggantikan pip, pip-tools, dan virtualenv yang ada
  • Mencakup fitur lanjutan seperti override versi dependensi, resolusi independen platform, dan reproducible build
  • Menjadi pengganti drop-in untuk pip tanpa perlu mengubah workflow yang ada, sambil memberikan peningkatan performa 10–100 kali
  • Mendukung konversi requirements.in → requirements.txt, pembuatan virtual environment, dan sinkronisasi requirements

Platform dan kebijakan versi

  • Mendukung berbagai sistem operasi (Windows, macOS, Linux)
  • Informasi kebijakan dan platform yang didukung dapat dilihat di dokumentasi resmi

Kontribusi (Contributing)

  • Bertujuan mendukung berbagai kontributor, dari pemula hingga ahli, dan menyediakan panduan terkait

FAQ

  • Pengucapan uv ditulis sebagai “yu-vi”
  • Gaya penulisan ditetapkan dalam huruf kecil sebagai “uv”

Latar belakang teknis dan ucapan terima kasih (Acknowledgements)

  • Algoritme resolusi dependensi menggunakan PubGrub
  • Implementasi Git berbasis Cargo
  • Strategi optimasi banyak terinspirasi dari alat packaging modern seperti pnpm, Orogene, Bun, Posy

Lisensi

  • Dapat digunakan dengan memilih salah satu dari MIT atau Apache-2.0
  • Kode yang dikontribusikan juga memiliki lisensi ganda dengan syarat yang sama

1 komentar

 
GN⁺ 2025-06-24
Komentar Hacker News
  • Sampai beberapa bulan lalu saya pikir tidak akan pernah memakai uv, karena saya sudah terbiasa dengan venv dan pip, dan merasa tidak benar-benar butuh alat lain. Tapi belakangan saya pernah harus bekerja di server bersama tanpa akses root, dengan berbagai paket dan driver dalam keadaan rusak, dan saya butuh pytorch. Sejak pengalaman itu saya sepenuhnya beralih ke uv. pip butuh waktu lama, cache-nya memakan banyak ruang, dan juga sulit dipindahkan lokasinya. Setelah pindah ke uv, semuanya berjalan sangat baik dan saya puas. Kalau masih ragu, saya benar-benar menyarankan untuk mencobanya setidaknya 5 menit.

    • Kelebihan terbaik uv adalah sepenuhnya kompatibel dengan alur kerja berbasis venv yang sudah dipakai sebelumnya; cukup jalankan uv venv.
    • uv terasa jauh lebih mudah dijelaskan, terutama saat membimbing pemula. Kombinasi pip + file konfigurasi + venv sering membingungkan karena harus membuat dan memasang ke venv yang benar, lalu mengingat shebang yang canggung atau aktivasi venv setiap kali menjalankan skrip/tes, sementara pesan error juga tidak selalu membantu. Saat mengajarkan pemula, alat-alat itu terasa sangat merepotkan. Sekarang cukup ingat "uv run", "uv add", dan "uv sync", jadi anggota tim juga menerimanya dengan beban yang jauh lebih ringan.
    • Dalam kasus saya, saya pindah dari asdf ke mise, jadi saya penasaran bagaimana perbandingannya dengan alat umum seperti uv.
    • Tadi disebut cache pip memakan banyak ruang dan lokasinya tidak bisa dipindahkan dengan baik; saya penasaran apakah uv lebih baik dari sisi pemakaian ruang penyimpanan, dan kalau iya, apakah itu karena cara berbaginya lebih efisien.
    • Baru-baru ini saya melihat panduan sederhana di repositori eksperimen yang dimulai dengan "uv a b c" lalu mencobanya. Sepertinya ada banyak duplikasi di balik layar, tetapi dalam penggunaan nyata di host standar GNU-Debian-Ubuntu tidak ada masalah berarti dan semuanya berjalan lancar, jadi saya puas.
  • Saat pertama kali memakai uv, saya ingat sempat mengira ada yang salah atau tidak bekerja dengan benar, karena selesai jauh terlalu cepat dibanding pip.

    • Kadang instalasi paket hanya butuh sekitar 200ms, jadi terasa ada sedikit jeda tipis di antara menekan Enter dan prompt muncul lagi. Tapi di Poetry, levelnya seperti sempat pergi minum kopi dulu baru selesai, jadi perbedaan kecepatannya sangat jelas.
    • Saya juga merasakan hal yang sama. Saking mulusnya sampai terasa seperti bukan Python.
    • Saya baru-baru ini juga mengalami hal serupa, dan sejak itu sepenuhnya pindah ke uv.
    • Saya juga sampai curiga, tapi setelah mencobanya saya puas sampai rasanya tidak bisa kembali lagi.
  • Saya rasa uv dan ruff adalah contoh tandingan yang keren untuk ungkapan "jangan pernah menciptakan ulang roda". Kalau tujuannya jelas, kadang hasilnya bisa jauh lebih baik daripada yang sudah ada.

    • Menurut saya, konteks nasihat seperti itu biasanya memang ditujukan kepada pemula yang belum memahami sistem yang ada, batasannya, dan titik yang bisa diperbaiki. Jadi itu hanya cocok ketika orang yang belum paham mencoba melakukan penemuan ulang secara gegabah; untuk pakar sungguhan, itu tidak berlaku.
    • Mereka bukan menciptakan ulang roda, melainkan mengganti roda kayu lama dengan bahan yang lebih kokoh sehingga bisa berputar 10 kali lebih cepat.
    • Kalau melihat sejarah manajemen paket Python saja, kesannya semua orang selalu masuk dengan keyakinan bahwa mereka bisa membuat yang lebih baik dari yang sebelumnya.
    • Sebenarnya pepatah "jangan menciptakan ulang roda" itu sendiri kurang masuk akal. Roda sungguhan pun terus kita kembangkan, jadi tidak ada alasan perangkat lunak tidak boleh membuat roda yang lebih baik juga.
    • Agak menyimpang sedikit, tapi saya penasaran kenapa orang lebih suka memakai ungkapan panjang seperti "order of magnitude better" daripada cukup menulis "10x" yang lebih singkat.
  • Di sistem kecil/berspesifikasi rendah (misalnya AWS T2.micro dengan Windows), uv mencoba terlalu banyak unduhan paralel sehingga terjadi timeout. Ini bisa diatasi dengan membatasi jumlah unduhan paralel ke sekitar 1~2 lewat variabel lingkungan UV_CONCURRENT_DOWNLOADS. Saya merasa pengaturan bawaan uv terlalu agresif, dan akan bagus kalau bisa ditingkatkan, misalnya dengan menyesuaikan thread per server secara otomatis berdasarkan kecepatan unduh.

    • Ini sama sekali bukan kasus aneh; banyak pengguna menjalankan side project di VPS murah (saya sendiri juga sering, meski bukan di AWS). Terima kasih sudah berbagi, semoga deteksi otomatisnya bisa ditingkatkan.
  • Belakangan saya mencoba memakai uv untuk penggunaan pribadi di laptop, dan sebagai orang yang terbiasa dengan pip, kecepatannya terasa sangat sulit dipercaya sampai beberapa kali saya sempat bingung apakah benar-benar sudah jalan.

  • Saya suka perintah uv add <mydependencies> --script mycoolscript.py, dan jika ditambah #!/usr/bin/env -S uv run di bagian paling atas, skrip Python bisa langsung dijalankan, jadi sangat berguna.

    • Saya mengajarkan cara ini ke Claude Project lewat prompt yang dikhususkan, jadi dengan satu input saja bisa otomatis membuat seluruh skrip lengkap dengan dependensinya. Cutoff Claude 4 adalah Maret 2025. Di Claude Sonnet 4, fitur ini bekerja bahkan tanpa prompt tambahan. Sebagai contoh, kalau diberi URL, ia langsung membuat kode yang melakukan crawling dengan httpx dan beautifulsoup lalu mengembalikan daftar tautan dalam CSV. Materi terkait Hasil skrip Claude
    • Saya memakai trik ini bersama app-mode dari notebook Marimo.io. Selama uv sudah terpasang, kita bisa dengan mudah membagikan aplikasi yang reaktif dan dapat direproduksi secara instan kepada orang lain dengan persiapan minimal. Kombinasi yang benar-benar hebat.
    • Sekarang saya jadi terbiasa menjalankan skrip kecil secara spontan. Karena tidak perlu lagi memikirkan pengelolaan environment atau dependensi, rasanya jauh lebih nyaman. Tulisan tentang the little scripter, video YouTube terkait, ez-mcp GitHub
    • Koreksi bahwa tadi saya salah membaca contohnya, serta penjelasan bahwa dalam konteks proyek, uv add --script dan uv add biasa itu berbeda. Di dokumentasi resmi juga ada banyak fitur yang lebih berguna seperti dukungan run --with atau PEP723, jadi disarankan untuk melihatnya. Panduan resmi
    • Pertanyaan tentang apa tepatnya yang dimaksud dengan "mydependencies", apakah itu maksudnya file konfigurasi.
  • Saya pernah mencoba uv dulu, dan terkejut karena sangat cepat dan mudah dipakai. Sekarang hampir tidak ada alasan lagi memakai pip, dan kalau hanya memakai Python, conda pun jadi tidak diperlukan.

    • pyenv dan poetry juga sekarang tidak saya pakai lagi.
  • Saya benar-benar suka UV. Saya juga suka Ruff dari tim Astral, jadi semua linting/formatting yang sebelumnya memakai pylint + Black saya pindahkan ke Ruff. Waktu lint turun dari 90 detik menjadi kurang dari 1,5 detik, dan itu sangat mengejutkan.

    • Tapi belakangan saya kecewa saat mengetahui bahwa ruff hanya melakukan sebagian pemeriksaan dari pylint dan bahkan melewatkan error yang terlalu jelas sekalipun (misalnya kode yang bahkan tidak bisa dijalankan juga tidak tertangkap).
  • Belakangan saya juga suka menjalankan skrip kecil yang bisa dieksekusi dengan pola seperti di bawah ini:

    #!/usr/bin/env -S uv --quiet run --script
    # /// script
    # requires-python = ">=3.13"
    # dependencies = [
    #   "python-dateutil",
    # ]
    # ///
    #
    # [python script that needs dateutil]  
    
    • Baris shebang itu terlalu sulit dihafal, jadi saya berharap ada bentuk yang lebih sederhana seperti #!/usr/bin/env uvx. Setiap kali mau memakainya saya harus mencari lagi, dan itu merepotkan.
  • Saya puas sepenuhnya dan tidak ingin kembali ke pip/twine/requirements.txt. Beberapa proyek menaruh wheel bersama di GitLab internal, dan YAML 10 baris yang lama sekarang bisa diganti dengan dua baris: "uv build" dan "uv publish". Dependensi jadi mudah diambil dan dependensi utama juga bisa langsung terlihat. Tidak perlu lagi mencampur semuanya ke dalam requirements.txt.