29 poin oleh GN⁺ 2025-10-30 | 7 komentar | Bagikan ke WhatsApp
  • uv secara drastis menyederhanakan instalasi Python dan pengelolaan virtual environment, serta menyelesaikan masalah konfigurasi lingkungan yang rumit di ekosistem Python
  • Ditulis dengan Rust, uv menghadirkan kecepatan dan stabilitas, serta menangani instalasi versi Python, manajemen paket, dan resolusi dependensi dalam satu perintah
  • Dengan mengenali pyproject.toml secara otomatis untuk menyiapkan lingkungan proyek, uv sync dapat mereproduksi lingkungan pengembangan yang sepenuhnya identik antaranggota tim
  • Melalui perintah seperti uv run, uv add, dan uvx, pengguna dapat menjalankan tanpa mengaktifkan virtual environment, serta menambahkan paket dan melakukan eksekusi sekali pakai
  • Dengan memastikan konsistensi instalasi dan eksekusi Python, uv dinilai sebagai titik balik yang sangat meningkatkan produktivitas developer dan efisiensi kolaborasi

Gambaran umum uv

  • uv adalah alat manajemen Python open source gratis yang dikembangkan oleh Astral, dengan tujuan menyederhanakan proses konfigurasi lingkungan yang kompleks
    • Astral adalah tim yang membuat alat pengembangan Python seperti Ruff
    • uv mendukung instalasi versi Python, instalasi paket, manajemen virtual environment, dan resolusi dependensi, serta jauh lebih cepat dibanding alat yang sudah ada
  • Dikembangkan dengan Rust, performanya sangat tinggi dan dapat berjalan di hampir semua platform seperti macOS, Linux, dan Windows

Instalasi dan penggunaan dasar

  • Instalasinya sangat sederhana, cukup dijalankan dengan satu baris perintah curl atau PowerShell
  • Karena tidak mengubah instalasi Python yang sudah ada, alat ini aman untuk dicoba
Iklan

Manajemen lingkungan proyek

  • uv secara otomatis mengelola virtual environment untuk setiap proyek Python dan menyiapkan lingkungan dengan mengenali file pyproject.toml
    • pyproject.toml mendefinisikan versi Python, daftar dependensi, nama dan versi proyek, dan sebagainya
    • Contoh:
      [project]  
      name = "my_project"  
      version = "1.0.0"  
      requires-python = ">=3.9,<3.13"  
      dependencies = ["astropy>=5.0.0", "pandas>=1.0.0,<2.0"]  
      
    • Pendekatan ini memberikan definisi lingkungan yang lebih jelas dan terstandarisasi dibanding pip

Membuat proyek baru

  • Dengan perintah uv init, proyek baru dapat dibuat dengan mudah
    • Secara otomatis membuat file penting seperti pyproject.toml dan README.md
    • Mendukung berbagai bentuk inisialisasi melalui opsi seperti --bare dan --package
    • Detail opsi dapat dilihat dengan uv init --help
Iklan

Sinkronisasi proyek yang sudah ada

  • Jika proyek memiliki pyproject.toml, proyek bisa langsung digunakan dengan perintah uv sync
    • Secara otomatis menginstal versi Python
    • Membuat virtual environment di direktori .venv
    • Membuat uv.lock yang mencatat informasi versi yang tepat dari semua paket
  • Dengan menggunakan perintah uv run, skrip Python dapat dijalankan tanpa harus mengaktifkan lingkungan terlebih dahulu
    • Contoh: uv run myscript.py, uv run jupyter lab

Manajemen dependensi dan versi Python

  • Dengan perintah uv add numpy>=2.0, dependensi dapat ditambahkan dan dikelola secara otomatis
    • Tidak perlu mengedit pyproject.toml secara manual
  • Dengan perintah uv python pin 3.12.9, versi Python tertentu dapat dikunci, sehingga reproduktibilitas lingkungan terjamin
Iklan

uvx: eksekusi sekali pakai yang cepat

  • uvx adalah perintah untuk langsung menjalankan alat tanpa konfigurasi lingkungan terpisah
    • Contoh: uvx ruff, uvx jupyter lab, uvx --with pandas,pyarrow ipython
    • Berbasis cache sehingga bisa dijalankan ulang dengan sangat cepat, cocok untuk pekerjaan eksperimental
  • Berkat ini, developer dapat dengan mudah menyiapkan lingkungan eksekusi sementara tanpa terikat pada virtual environment

Jika ini masih belum meyakinkan Anda: catatan pribadi

  • Saat mengembangkan The Astrosky Ecosystem, uv diadopsi untuk menyeragamkan lingkungan Python di berbagai OS
    • Membantu memastikan semua developer dan server menggunakan instalasi Python serta versi dependensi yang sepenuhnya sama
    • uv juga mengelola lingkungan Python di GitHub Actions dan lingkungan server produksi
  • Berkat uv, masalah ketidaksesuaian antara lingkungan instalasi dan pengujian hilang, dan kolaborasi antar-developer menjadi lebih sederhana

Kesimpulan

  • uv secara mendasar mengatasi kompleksitas instalasi dan manajemen Python, serta memungkinkan developer berkolaborasi secara stabil dalam lingkungan yang sama
  • Berkat kecepatannya yang tinggi dan stabilitas berbasis Rust, uv dinilai sebagai “inovasi terbesar yang terjadi di ekosistem Python dalam 10 tahun terakhir”

7 komentar

 
kkksss 2025-11-06

Saya pikir pdm hampir sangat mirip dengan uv, tetapi tampaknya tidak banyak pembahasan tentang pdm.

 
yuntae 2025-10-30

Sepertinya postingan tentang uv sekarang sudah tidak banyak berubah isinya.

 
pmc7777 2025-10-30

Maven dan Gradle juga..

 
GN⁺ 2025-10-30
Komentar Hacker News
  • Dulu saya sering dengar bahwa tooling Python sudah cukup, tetapi sekarang setelah para pengembang Python merasakan ekosistem berbasis lockfile seperti npm, cargo, atau bundler, rasanya melegakan melihat mereka akhirnya menyadari keunggulannya
    npm juga punya masalah, tetapi instalasi yang konsisten dan lockfile benar-benar konsep yang luar biasa

    • Tidak ada yang lebih menakutkan daripada harus menjalankan proyek Python milik orang lain
      Mengejutkan bahwa pengelolaan environment bisa tidak nyaman selama ini
    • Saya penasaran kenapa ini butuh waktu selama itu
      Saya bertanya-tanya apakah banyaknya upaya yang gagal semata-mata karena sulitnya manajemen paket, atau karena memang butuh pendanaan VC
    • Dari dulu saya memakai pip freeze > requirements.txt dan pip install -r requirements.txt
      Jika tidak memakai rentang versi, pada dasarnya requirements.txt berfungsi sebagai lockfile
      Jadi menurut saya tren “lockfile resmi” belakangan ini agak dibesar-besarkan
    • npm juga sempat lama tidak punya lockfile
      Saya rasa kemunculan yarn berperan besar dalam mendorong perbaikan npm
    • Saya sudah mengerjakan web development sejak 1998, dan menurut saya PNPM jauh lebih baik daripada npm
      Lebih cepat, lebih efisien, dan deterministik
      Lihat penjelasan lengkapnya di pnpm.io/motivation
  • Dengan UV script, saya bisa mendistribusikan klien/server MCP dalam satu file
    Tulisan terkait: MCP server in a file

  • Karena kebanyakan script saya hanya satu file, hidup jadi jauh lebih sederhana kalau menambahkan kode berikut di bagian paling atas
    #!/usr/bin/env -S uv run --script
    Dengan begitu script bisa berjalan seperti executable mandiri, dan uv akan otomatis memasang modul yang dibutuhkan

    • Dari sudut pandang keamanan, pendekatan seperti ini punya sedikit risiko
      Karena penulis script bisa saja menyembunyikan dependensi berbahaya
      Akan bagus kalau ada fitur whitelist
    • Per tanggal hari ini, Anda bisa memakai flag tanggal rilis maksimum untuk mengunci versi tanpa lockfile
      Namun beberapa paket tidak bisa mendeteksi tanggal rilisnya (contoh: yaml)
    • Untuk menjalankannya, uv tetap harus sudah terpasang, jadi ini bukan standalone sepenuhnya
    • Harus mendukung /usr/bin/env -S, dan nama dependensi harus memakai nama paket distribusi yang digunakan di perintah uv pip install
      Ini adalah standar PEP 723 dan juga didukung oleh pipx
    • Butuh koneksi internet, dan versi yang terpasang bisa berbeda tergantung keadaan registry
  • Sebelum memakai uv saya tidak tertarik pada Rust, tetapi gara-gara uv saya jadi memindahkan kode yang sensitif terhadap performa ke Rust
    Saya berharap conda hilang sepenuhnya. Di klaster ML, environment conda jadi terlalu besar dan reproducibility-nya juga buruk

    • Sebagai alternatif conda, saya direkomendasikan pixi berbasis Rust. Itu memakai ulang solver PyPI milik uv
    • conda memang reproducible kalau dependensinya dikunci, tetapi proses build-nya lambat
    • Kalau ini klaster ML, saya rasa seharusnya sudah dikontainerisasi sehingga tidak perlu conda
    • Saya penasaran bagaimana uv menangani manajemen dependensi CUDA
    • Untuk pendekatan open source dalam mengelola dependensi ML skala besar, lihat dokumentasi Metaflow dan blog Fast Bakery
  • Dulu saya sudah cukup puas dengan kombinasi pyenv + venv + pip + pipx, tetapi uv

    • punya kecepatan resolusi dependensi yang sangat tinggi
    • lewat uv run, uv add, dan sebagainya, usability-nya jadi jauh lebih baik
    • menyatukan banyak tool menjadi satu
    • dan mempermudah instalasi Python
  • Jauh lebih nyaman menambahkan uv di depan perintah daripada mengaktifkan environment
    Pengelolaan versi Python juga jadi mudah, dan per proyek terasa seperti batteries-included
    Saya belum tahu stabilitas jangka panjangnya, tetapi untuk proyek baru sekarang saya pakai secara default

    • Aktivasi environment pada dasarnya cuma mengatur PATH dan prompt
      Ada juga orang yang tidak suka uv mendeteksi environment secara otomatis
      Saya kurang melihat nilai besar dari manajemen versi Python, tetapi dengan uv pembuatan ulang environment jadi jauh lebih cepat
    • Dengan menambahkan uv, perintah bisa dijalankan secara stateless sehingga nyaman untuk kolaborasi
    • Saya memakainya bersama mise untuk auto-activation, tetapi prefiks uv tetap berguna
    • Filosofi uv adalah venv itu disposable. Kalau ada masalah, cukup hapus .venv
    • Sebenarnya pengaturan environment seperti ini memang masalah yang “seharusnya tinggal jalan”
  • Tulisan blog ini hampir persis sama dengan pengalaman saya
    Friksi berkurang dan semuanya jadi lebih sederhana
    Saya berharap komunitas Python mengadopsi uv sebagai tool default

  • Tool berbasis Rust benar-benar mengubah kecepatan feedback loop
    Tapi saya penasaran bagaimana Astral menghasilkan uang. Mereka juga menerima investasi, tetapi belum punya produk berbayar

    • Model bisnis Astral adalah menjual perangkat lunak enterprise yang terintegrasi dengan tool open source
      Contohnya registry paket internal perusahaan
      Wawancara terkait: Wawancara Charlie Marsh
    • Produk yang berpotensi berkembang menjadi layanan berbayar adalah Pyx
    • Conda juga menghasilkan uang hanya dari akses ke “paket dengan keamanan yang diperkuat”
      Jika ada 10 juta pengembang Python, saya rasa uv juga cukup bisa dimonetisasi
  • Secara pribadi, saya menganggap type annotation dan penghapusan GIL lebih penting daripada uv
    uv sendiri masih tahap awal dan masih ada hal-hal yang terasa kurang nyaman. Pada akhirnya ini tetap cuma package manager lain

    • Sebagian alasan orang memuji uv sebenarnya adalah hasil dari perbaikan pada pip dan venv berkat PEP yang kini sudah distandardisasi
      resolver baru di pip dan makin banyaknya distribusi wheel berperan besar
      Tulisan terkait: Wheels are faster for pure Python
    • Di level bahasa, penghapusan GIL memang akan menjadi perubahan yang lebih besar, tetapi sejauh ini belum banyak kasus yang benar-benar berguna
    • Type hint sendiri sudah fitur lama yang diperkenalkan pada 2015
    • uv bukan sekadar package manager, tetapi memberi nilai besar dalam menyederhanakan distribusi
      Fakta bahwa ia ditulis dengan Rust juga menarik. Strukturnya mendukung bahasa lain seperti LLVM
      Dari sudut pandang end-user, uv jauh lebih baik, dan kalau maintainer merasa tidak nyaman, mereka bisa memberi masukan
    • Type annotation bagus untuk dokumentasi, tetapi nilai praktisnya rendah
      Kalau ada strict mode, mungkin performa juga bisa meningkat, tetapi itu bertentangan dengan filosofi bahasa
      Meski begitu, kalau conda hilang, saya bersedia pindah ke uv
  • Saya pribadi tidak suka uv

    • Ia mencoba melakukan terlalu banyak hal: ingin sekaligus menggantikan pip, pyenv, virtualenv, bahkan ruff
    • Tetap harus memakai uv pip, jadi bukan pengganti penuh juga
    • Kompatibilitasnya dengan Docker juga kurang baik
    • Ada banyak environment variable baru yang membuat kompleksitas meningkat
    • Saya tidak merasa aneh kalau pyenv, virtualenv, dan pip terpisah
      Tapi memang pip dan venv juga sering rusak dan lebih sulit di-debug
    • Sebenarnya pip, pyenv, dan virtualenv hampir selalu dipakai bersama, jadi tool terpadu itu masuk akal
      uv tidak menggantikan ruff
      Environment variable juga sebenarnya tidak perlu disentuh
    • uv pip bukan memanggil pip, melainkan menyediakan antarmuka yang kompatibel
      Pada praktiknya uv memang menggantikan pip
      Saya penasaran masalah kompatibilitas Docker yang dimaksud itu yang seperti apa
    • Kalau dikelola dengan uv add, uv sync, dan uv run, hasilnya jauh lebih ergonomis dan cepat
      Dokumentasi lengkapnya lihat konsep dependencies di uv
    • Dalam pengalaman saya, uv menjalankan banyak peran itu dengan baik. Saya penasaran masalah spesifik apa yang Anda alami
 
aer0700 2025-11-01

uv memang bagus karena cepat, tapi saya juga sempat berpikir bagaimana kalau arahnya adalah memperbaiki pip.

 
ztaka 2025-11-02

Saya sering memakainya untuk ML dan Web, dan saya berharap uv segera menjadi teknologi yang membosankan haha

 
doolayer 2025-10-30

Kalau lihat repo yang cuma punya requirements tapi tidak ada pyproject.toml, sekarang rasanya sudah kelihatan kuno ya, haha;