Python UV: Panduan Utama untuk Pengelola Paket Python Tercepat
Pelajari cara menggunakan UV, pengelola paket Python tercepat pada 2026. Temukan manajemen dependensi 10x lebih cepat, virtual environment, dan migrasi mulus dari pi
UV adalah pengelola dan penginstal paket Python modern berperforma tinggi yang ditulis dengan Rust. UV dapat menjadi pengganti langsung untuk alat manajemen paket Python tradisional seperti pip, dengan peningkatan signifikan dalam kecepatan, keandalan, dan resolusi dependensi.
Alat ini mewakili generasi baru pengelola paket Python, dirancang untuk mengatasi titik nyeri umum dalam ekosistem Python seperti waktu instalasi yang lambat, konflik dependensi, dan kompleksitas pengelolaan environment. UV mencapai hal ini melalui arsitektur inovatif dan implementasi yang efisien, menjadikannya 10–100 kali lebih cepat dibanding pengelola paket tradisional.
Fitur utama yang membuat UV menonjol:
Instalasi paket dan resolusi dependensi yang sangat cepat
Kompatibel dengan alat dan alur kerja Python yang sudah ada
Manajemen virtual environment bawaan
Dukungan untuk standar packaging modern
Penguncian dependensi yang andal dan environment yang dapat direplikasi
Penggunaan memori efisien, terutama untuk proyek besar
Baik untuk proyek pribadi kecil maupun aplikasi Python skala besar, UV menawarkan solusi manajemen paket yang tangguh dan efisien. Dalam tutorial ini, kami akan membahas semua aspek penting UV agar Anda bisa langsung menggunakannya.
Ringkasnya
UV adalah pengelola paket Python bertenaga Rust yang 10–100x lebih cepat daripada pip
Instal dengan curl -LsSf https://astral.sh/uv/install.sh | sh
Inisialisasi proyek dengan uv init dan tambahkan dependensi dengan uv add package
Jalankan skrip dengan uv run script.py—tanpa perlu aktivasi virtual environment secara manual
UV menggantikan pip, virtualenv, pyenv, dan pip-tools dalam satu alat
Lock file (uv.lock) menjamin environment yang dapat direproduksi lintas mesin
Gunakan uvx untuk menjalankan alat CLI seperti black dan ruff tanpa instalasi permanen
Perbedaan Antara UV, Poetry, PIP, Conda, dan virtualenv
Pertanyaan pertama yang sering diajukan pengembang sebelum beralih ke alat baru adalah "Bagaimana perbandingannya dengan yang sudah saya gunakan?". Dalam ranah manajemen dependensi dan proyek Python, empat alat ini sudah paling umum:
Mari bandingkan UV dengan masing-masing alat ini untuk membantu Anda memutuskan apakah UV adalah pilihan yang tepat sesuai kebutuhan Anda sebelum masuk ke detailnya.
UV vs. PIP dan virtualenv
PIP dan virtualenv telah lama menjadi alat tradisional untuk manajemen paket Python dan pembuatan virtual environment. Meski fungsional, UV menawarkan beberapa keunggulan menarik:
Kecepatan: Implementasi Rust UV membuatnya jauh lebih cepat daripada PIP untuk instalasi paket dan resolusi dependensi, sering kali menyelesaikan tugas dalam hitungan detik yang butuh menit di PIP.
Manajemen environment terintegrasi: Jika virtualenv hanya membuat environment dan PIP hanya mengelola paket, UV menggabungkan keduanya dalam satu alat, menyederhanakan alur kerja.
UV mempertahankan kompatibilitas penuh dengan ekosistem PIP sambil mengatasi keterbatasan utamanya. UV dapat menggunakan file requirements.txt dan indeks paket yang sama, sehingga migrasi berjalan mulus. Perbedaan kunci:
Kinerja: Unduhan paralel UV dan resolver dependensi yang dioptimalkan membuatnya 10–100x lebih cepat daripada PIP untuk proyek besar.
Penggunaan memori: UV menggunakan memori jauh lebih sedikit daripada PIP selama instalasi paket dan resolusi dependensi.
Penanganan galat: UV memberikan pesan kesalahan yang lebih jelas dan resolusi konflik yang lebih baik saat dependensi berbenturan.
Reproducibility: Pendekatan lockfile UV memastikan environment konsisten di berbagai sistem, sesuatu yang tidak dijamin dengan file requirements.txt dasar.
Walau PIP dan virtualenv tetap layak digunakan, arsitektur modern dan fungsi gabungan UV menjadikannya alternatif menarik bagi pengembang yang mencari performa lebih baik dan alur kerja yang lebih ringkas. Kemampuan menyisipkan UV ke proyek yang ada tanpa mengganggu proses yang mapan sangat menarik bagi tim yang ingin memodernisasi toolchain pengembangan Python secara bertahap.
UV vs. Conda
Mereka yang tidak menggunakan PIP dan virtualenv biasanya beralih ke Conda—dan ada alasannya:
Conda menyediakan solusi manajemen paket lengkap yang menangani bukan hanya paket Python tetapi juga dependensi tingkat sistem
Conda unggul dalam mengelola environment komputasi ilmiah kompleks dengan paket seperti NumPy, SciPy, dan TensorFlow
Environment Conda lebih terisolasi dan dapat direproduksi lintas sistem operasi
Dukungan bawaan untuk berbagai versi Python dan mudah beralih antarversi
Distribusi Anaconda menyertakan banyak paket ilmiah pra-instal, memudahkan data scientist
Namun bahkan pengguna Conda yang hardcore pun sebaiknya mempertimbangkan beralih ke UV karena berbagai alasan. (Untuk perbandingan lebih luas alat manajemen environment, lihat Anaconda vs Python: Exploring Their Differences.) Instalasi paket dan resolusi dependensi UV yang sangat cepat dapat mempercepat penyiapan environment secara dramatis dibanding kinerja Conda yang kadang lamban. Jejak sumber dayanya yang minimal berarti penggunaan memori lebih kecil dan waktu mulai lebih cepat. UV juga terintegrasi mulus dengan standar dan alat packaging Python yang ada, memudahkan bekerja dengan ekosistem Python yang lebih luas. Untuk proyek yang tidak memerlukan manajemen paket non-Python milik Conda, UV memberikan solusi yang lebih ringkas dan efisien yang dapat meningkatkan alur kerja pengembangan secara signifikan.
UV vs. Poetry
Saya pengguna Conda hampir tiga tahun, tetapi setelah mencoba Poetry beberapa kali, saya tidak pernah menyentuh Conda yang secepat kura-kura lagi. Saat saya mulai nyaman dengan Poetry, saya menemukan UV dan ia menawarkan kemampuan yang hampir sama dengan Poetry:
Manajemen dependensi: Keduanya menangani dependensi paket dan virtual environment secara efektif
Struktur proyek: Keduanya menyediakan alat untuk menginisialisasi dan menstrukturkan proyek Python
Lock file: Keduanya menghasilkan lock file untuk menjamin environment yang dapat direproduksi
Publikasi paket: Keduanya mendukung publikasi paket ke PyPI
Perkakas modern: Keduanya merepresentasikan pendekatan modern terhadap manajemen proyek Python
Namun, fitur pembeda UV adalah kecepatannya yang luar biasa dan penggunaan sumber daya yang minimal. Meski Poetry merupakan peningkatan besar atas alat tradisional, UV membawa kinerja ke level lain berkat implementasi Rust. Selain itu, kompatibilitas UV dengan packaging Python yang ada berarti ia dapat bekerja berdampingan dengan alat lain seperti pip, menawarkan fleksibilitas yang kadang kurang pada pendekatan Poetry yang lebih opinionated.
Berikut tabel yang merangkum perbedaan yang baru saja kita bahas:
Fitur
UV
PIP + virtualenv
Conda
Poetry
Implementasi
Rust
Python
Python
Python
Kecepatan
10–100x lebih cepat dari pip
Dasar
Lebih lambat dari pip
Lebih cepat dari pip
Penggunaan Memori
Sangat efisien
Lebih tinggi
Tinggi
Sedang
Manajemen Environment
Bawaan
Perlu alat terpisah
Bawaan
Bawaan
Resolusi Dependensi
Cepat, resolver modern
Dasar
Komprehensif
Resolver modern
Paket Non-Python
Tidak
Tidak
Ya
Tidak
Lock File
Ya
Tidak (requirements.txt dasar)
Ya
Ya
Struktur Proyek
Ya
Tidak
Tidak
Ya
Publikasi Paket
Ya
Ya (dengan twine)
Ya
Ya
Kompatibilitas
Bekerja dengan ekosistem pip yang ada
Alat standar Python
Ekosistem sendiri
Pendekatan lebih opinionated
Penanganan Galat
Pesan galat jelas
Dasar
Bagus
Bagus
Jejak Sumber Daya
Minimal
Sedang
Berat
Sedang
Fokus Komputasi Ilmiah
Tidak
Tidak
Ya
Tidak
Konsistensi Lintas Platform
Ya
Terbatas
Sangat baik
Baik
Jika menurut Anda UV layak untuk dicoba, lanjutkan membaca.
Memulai Dengan UV untuk Proyek Python
Di bagian ini, kita membahas cara memulai proyek dari nol menggunakan UV. Jika Anda butuh bantuan terlebih dahulu untuk menyiapkan environment pengembangan Python, lihat panduan kami. Kita akan membahas cara migrasi dari proyek yang sudah ada ke UV pada bagian berikutnya.
Menginstal UV
UV dapat diinstal untuk seluruh sistem menggunakan cURL di macOS dan Linux:
$ curl-LsSf https://astral.sh/uv/install.sh |shDidukung oleh
Dan dengan Powershell di Windows (pastikan Anda menjalankan Powershell dengan hak administrator):
$ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Didukung oleh
Jika Anda menginstal UV melalui Homebrew, gunakan brew upgrade uv. Anda juga dapat mengaktifkan autocompletion shell untuk perintah UV:
$ echo'eval "$(uv generate-shell-completion zsh)"'>> ~/.zshrc # For Zsh
$ echo'eval "$(uv generate-shell-completion bash)"'>> ~/.bashrc # For BashDidukung oleh
Menginisialisasi proyek baru
Bekerja dengan proyek adalah inti pengalaman menggunakan UV. Mulailah dengan menginisialisasi proyek kosong menggunakan perintah uv init:
$ uv init explore-uv
Initialized project explore-uv at /Users/bexgboost/projects/explore-uvDidukung oleh
Perintah ini akan langsung membuat direktori explore-uv baru dengan konten berikut:
$ cd explore-uv
$ tree -a.
├── .gitignore
├── .python-version
├── README.md
├── hello.py
└── pyproject.tomlDidukung oleh
Git diinisialisasi secara otomatis dan berkas terkait git utama seperti .gitignore dan README.md kosong akan dibuat. Berkas .python-version berisi versi Python yang digunakan untuk proyek, sedangkan pyproject.toml berfungsi sebagai berkas konfigurasi utama untuk metadata proyek dan dependensi. Berkas contoh hello.py juga dibuat untuk membantu Anda mulai dengan cepat.
Saat pertama kali menjalankan perintah add, UV membuat virtual environment baru di direktori kerja saat ini dan menginstal dependensi yang ditentukan. Pada pemanggilan berikutnya, UV akan menggunakan ulang virtual environment yang ada dan hanya memasang atau memperbarui paket yang baru diminta, memastikan manajemen dependensi yang efisien.
Proses penting lain yang terjadi pada setiap perintah add adalah resolusi dependensi. UV menggunakan resolver dependensi modern yang menganalisis keseluruhan grafik dependensi untuk menemukan himpunan versi paket yang kompatibel dan memenuhi semua kebutuhan. Ini membantu mencegah konflik versi dan memastikan environment yang dapat direproduksi. Resolver mempertimbangkan faktor seperti batasan versi, kompatibilitas versi Python, dan persyaratan spesifik platform untuk menentukan himpunan paket optimal untuk dipasang.
UV juga memperbarui berkas pyproject.toml dan uv.lock setelah setiap perintah penambahan. Berikut tampilan berkas TOML setelah memasang Scikit-learn dan XGBoost:
$ cat pyproject.toml
[project]
name ="explore-uv"
version ="0.1.0"
description ="Add your description here"
readme ="README.md"
requires-python =">=3.9"
dependencies =["scikit-learn>=1.5.2",
"xgboost>=2.0.3",
]Didukung oleh
Untuk menghapus dependensi dari environment dan berkas pyproject.toml, Anda dapat menggunakan perintah uv remove. Ini akan mencopot paket dan seluruh child-dependencies-nya:
Kita akan membahas manajemen dependensi lebih rinci pada bagian berikutnya.
Menjalankan skrip Python dengan UV
Setelah Anda memasang dependensi yang diperlukan, Anda bisa mulai mengerjakan skrip Python seperti biasa. Jika Anda menggunakan VS Code, lihat panduan kami tentang menyiapkan VS Code untuk Python. UV menyediakan beberapa cara untuk menjalankan kode Python:
Untuk menjalankan skrip Python secara langsung, gunakan perintah uv run diikuti nama skrip Anda alih-alih sintaks biasa python script.py:
Perintah run memastikan skrip dieksekusi di dalam virtual environment yang dibuat UV untuk proyek.
Menjalankan skrip dengan dependensi inline (PEP 723)
UV mendukung metadata skrip inline PEP 723, yang memungkinkan Anda mendeklarasikan dependensi langsung di dalam skrip Python. Ini berguna untuk skrip mandiri yang membutuhkan paket tanpa menyiapkan proyek penuh:
Jalankan skrip dengan uv run, dan UV secara otomatis membuat environment terisolasi dengan dependensi yang dideklarasikan:
$ uv run script.py
GitHub API status: 200Didukung oleh
Ini sangat kuat untuk berbagi skrip yang dapat direplikasi dengan rekan kerja—siapa pun yang memasang UV dapat menjalankan skrip tanpa memasang dependensi secara manual.
Mengelola Versi Python di UV
Mengelola versi Python adalah bagian kunci dari manajemen dependensi. UV menyediakan perintah sederhana untuk mengontrol versi Python yang Anda gunakan. Mari jelajahi cara menggunakan perintah uv python.
Memasang versi Python dengan UV
UV dapat memasang dan mengelola versi Python secara langsung, menggantikan kebutuhan alat seperti pyenv:
$ uv python install3.12
$ uv python install3.113.13# Install multiple versions at onceDidukung oleh
Instalasi Python disimpan di ~/.local/share/uv/python/ dan tidak mengganggu Python sistem Anda. Anda juga dapat mem-pin proyek ke versi Python tertentu:
Ini memperbarui berkas .python-version di direktori proyek Anda. UV kemudian akan menggunakan versi ini untuk semua operasi proyek.
Mendaftar versi Python yang ada
Karena umum bagi sistem untuk sudah memiliki Python terpasang, UV secara bawaan dapat menemukan instalasi yang sudah ada. Misalnya, untuk menampilkan semua versi Python yang terdeteksi UV di sistem Anda, jalankan perintah berikut:
Perintah tersebut dengan benar mendeteksi versi Python yang saya pasang melalui Conda dan Brew.
Mengubah versi Python untuk proyek saat ini
Anda dapat beralih versi Python untuk proyek UV Anda kapan saja selama versi baru memenuhi spesifikasi di berkas pyproject.toml Anda. Misalnya, berkas berikut memerlukan Python versi 3.9 ke atas:
Artinya Anda dapat mengubah versi Python di berkas .python-version ke versi mana pun di atas itu, misalnya 3.11.7. Setelahnya, panggil uv sync.
Perintah ini terlebih dahulu memeriksa instalasi Python yang ada. Jika versi yang diminta tidak ditemukan, UV akan mengunduh dan memasangnya di jalur /Users/username/.local/share/uv/python. UV juga membuat virtual environment baru di direktori proyek, menggantikan yang lama.
Perintah uv sync menangani semuanya secara otomatis—menciptakan virtual environment baru dan memasang ulang semua dependensi dari berkas pyproject.toml dan uv.lock Anda. Tidak perlu langkah instalasi tambahan.
Perhatikan bahwa terkadang perintah uv dapat memunculkan galat Permission Denied. Dalam kasus tersebut, pastikan gunakan perintah sudo jika Anda menggunakan macOS atau Linux, atau jalankan command prompt dengan hak administrator jika Anda menggunakan Windows. Solusi yang lebih baik adalah mengubah kepemilikan direktori home UV ke pengguna:
$ sudochown-R$USER ~/.local/share/uv # macOS or LinuxDidukung oleh
Beberapa paket Python diekspos sebagai alat baris perintah seperti black untuk pemformatan kode, flake8 untuk linting, pytest untuk pengujian, mypy untuk pemeriksaan tipe, dan lain-lain. UV menyediakan dua antarmuka khusus untuk mengelola paket ini:
Saat perintah ini dijalankan, UV membuat virtual environment sementara di cache-nya. Alat yang diminta diinstal dan dijalankan dari sana. Dengan kata lain, Anda dapat menggunakan alat baris perintah tanpa memasangnya di virtual environment proyek, menghasilkan eksekusi yang lebih cepat dan dependensi proyek yang lebih bersih.
Poin kunci tentang antarmuka menjalankan tool:
Bekerja dengan paket Python apa pun yang menyediakan alat baris perintah seperti flake8, mypy, black, atau pytest
Environment yang di-cache akan dibersihkan otomatis saat membersihkan cache UV
Environment cache baru dibuat sesuai kebutuhan
Sempurna untuk penggunaan alat pengembangan sesekali
Untuk alat yang sering Anda gunakan, pasang secara permanen dengan uv tool install:
$ uv tool install ruff
$ uv tool install black
$ ruff check .# Now available directly in PATHDidukung oleh
Alat yang dipasang permanen tersedia secara global melalui PATH Anda, tanpa mengotori virtual environment proyek mana pun. Anda dapat memperbaruinya dengan uv tool upgrade ruff dan menampilkan semua alat yang terpasang dengan uv tool list.
Lock file (uv.lock) adalah bagian penting dari manajemen dependensi di UV. Saat Anda menjalankan perintah uv add untuk memasang dependensi, UV secara otomatis membuat dan memperbarui berkas uv.lock. Lock file ini memiliki beberapa tujuan penting:
Mencatat versi tepat dari semua dependensi dan sub-dependensinya yang dipasang.
Memastikan build yang dapat direproduksi dengan "mengunci" versi dependensi di berbagai environment.
Membantu mencegah "dependency hell" dengan mempertahankan versi paket yang konsisten.
Mempercepat instalasi karena UV dapat menggunakan versi yang sudah dikunci alih-alih menyelesaikan dependensi lagi.
UV mengelola lock file secara otomatis—Anda tidak perlu mengeditnya secara manual. Lock file sebaiknya dikomit ke kontrol versi untuk memastikan semua pengembang menggunakan versi dependensi yang sama.
Perbedaan Antara Lock File dan requirements.txt
Walau lock file dan requirements.txt sama-sama melacak dependensi, keduanya memiliki tujuan dan kasus penggunaan yang berbeda. Lock file berisi informasi detail tentang versi paket yang persis beserta pohon dependensinya, memastikan environment konsisten selama pengembangan. Requirements.txt lebih sederhana, biasanya hanya mencantumkan dependensi langsung, dan didukung luas di berbagai alat Python.
Lock file penting untuk pengembangan guna menjaga build yang dapat direproduksi dan mencegah konflik dependensi. Requirements.txt lebih cocok untuk skenario deployment atau saat berbagi kode dengan pengguna yang mungkin tidak menggunakan UV. Berkas ini juga diperlukan untuk kompatibilitas dengan alat dan layanan yang tidak mendukung format lock file UV.
Anda dapat mempertahankan keduanya dengan menggunakan lock file UV untuk pengembangan sambil menghasilkan requirements.txt untuk deployment. Untuk menghasilkan requirements.txt dari lock file UV, gunakan perintah berikut:
Perintah ini membuat berkas teks dengan versi yang dipin berdasarkan lock file Anda, sehingga mudah membagikan dependensi proyek dalam format standar sembari tetap mendapat manfaat dari manajemen dependensi canggih UV selama pengembangan.
Anda dapat mempelajari lebih lanjut tentang mengelola lock file dari dokumentasi.
Manajemen Dependensi Lanjutan dengan UV
Di bagian ini, kita akan mengeksplorasi metode yang lebih canggih untuk mengelola dependensi di UV. Kita akan mempelajari cara memperbarui dependensi, menjadikannya opsional, atau menjadikannya bagian dari grup dependensi.
Memperbarui dependensi
Dalam proyek jangka panjang, umum untuk memperbarui paket yang Anda gunakan agar mendapatkan fitur terbaru. Atau terkadang, paket yang Anda gunakan memperkenalkan breaking changes dan Anda ingin memastikan versi tersebut tidak terpasang secara tidak sengaja di environment Anda. Perintah add dapat digunakan lagi dalam skenario ini dan skenario lain saat Anda perlu mengubah batasan atau versi dependensi yang ada.
$ uv add'requests; sys_platform="linux"'Didukung oleh
Menambahkan dependensi opsional
Dependensi opsional adalah paket yang tidak diperlukan untuk fungsi inti proyek Anda tetapi mungkin dibutuhkan untuk fitur tertentu. Misalnya, Pandas memiliki ekstra excel dan ekstra plot untuk menghindari pemasangan parser Excel dan matplotlib kecuali jika seseorang secara eksplisit membutuhkannya. Dependensi opsional biasanya dipasang dengan sintaks pip install pandas[plot, excel].
Dengan UV, sintaks ini sedikit berbeda. Pertama, pastikan paket Pandas inti terpasang:
Setelah terselesaikan, dependensi ini akan tercantum di pyproject.toml Anda dengan format berikut:
[project]
name = "explore-uv"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.9"
dependencies = ["pandas[plot,excel]>=2.2.3","requests>=2.32.3",]Didukung oleh
Grup dependensi
Grup dependensi memungkinkan Anda untuk mengelompokkan dependensi ke dalam grup logis, seperti dependensi pengembangan, pengujian, atau dokumentasi. Ini berguna untuk memisahkan dependensi produksi dari dependensi pengembangan.
Untuk menambahkan dependensi ke grup tertentu, gunakan flag --group:
$ uv add--group group_name package_nameDidukung oleh
Kemudian, pengguna dapat mengontrol grup mana yang akan dipasang menggunakan tag --group, --only-group, dan --no-group.
Beralih dari PIP dan Virtualenv ke UV
Migrasi dari PIP dan virtualenv ke UV mudah karena UV mempertahankan kompatibilitas dengan standar packaging Python yang ada. Berikut panduan langkah demi langkah agar transisi berjalan mulus:
1. Mengonversi proyek virtualenv yang sudah ada
Jika Anda memiliki proyek yang menggunakan virtualenv dan pip, mulailah dengan menghasilkan berkas requirements.txt dari environment Anda saat ini jika belum:
Berikut referensi cepat untuk mengganti perintah pip dan virtualenv umum dengan padanannya di UV:
Perintah pip/virtualenv
Padanan UV
python -m venv .venv
uv venv
pip install package
uv add package
pip install -r requirements.txt
uv pip install -r requirements.txt
pip uninstall package
uv remove package
pip freeze
uv pip freeze
pip list
uv pip list
Setelah migrasi, Anda dapat dengan aman menghapus direktori virtualenv lama dan mulai menggunakan manajemen virtual environment UV. Transisi biasanya mulus, dan Anda selalu dapat kembali ke perintah pip melalui lapisan kompatibilitas pip milik UV jika diperlukan.
Menggunakan UV di CI/CD dan Docker
Kecepatan UV sangat berharga di pipeline CI/CD di mana pemasangan dependensi terjadi pada setiap build. Berikut contoh workflow GitHub Actions yang menggunakan UV:
jobs:test:runs-on: ubuntu-latest
steps:-uses: actions/checkout@v4
-name: Install uv
uses: astral-sh/setup-uv@v3
-name: Set up Python
run: uv python install 3.12
-name: Install dependencies
run: uv sync --frozen --dev
-name: Run tests
run: uv run pytest tests/Didukung oleh
Flag --frozen memastikan CI menggunakan versi persis seperti di lock file, dan akan gagal jika lock file kedaluwarsa. Ini menjamin build yang dapat direproduksi.
Integrasi Docker
UV juga dapat mempercepat build image Docker secara signifikan:
Dengan menyalin berkas dependensi terlebih dahulu dan memasang sebelum menyalin kode sumber, Anda memaksimalkan caching layer Docker. Instalasi dependensi hanya dijalankan ulang saat pyproject.toml atau uv.lock berubah.
Kesimpulan
UV merupakan lompatan besar dalam manajemen paket Python, menawarkan alternatif yang modern, cepat, dan efisien terhadap alat tradisional. Keunggulan utamanya meliputi:
Performa sangat cepat dengan peningkatan 10–100x dibanding pip
Integrasi mulus dengan standar packaging Python yang ada
Manajemen virtual environment bawaan
Resolusi dependensi yang efisien dan dukungan lock file
Jejak memori dan penggunaan sumber daya yang rendah
Baik Anda memulai proyek baru atau memigrasikan yang sudah ada, UV menawarkan solusi andal yang dapat meningkatkan alur kerja pengembangan Python Anda secara signifikan. Kompatibilitasnya dengan alat yang ada menjadikannya pilihan mudah bagi pengembang yang ingin memodernisasi toolchain tanpa mengganggu proses saat ini.
Seiring ekosistem Python terus berkembang, alat seperti UV menunjukkan bagaimana teknologi modern seperti Rust dapat meningkatkan pengalaman pengembangan sambil mempertahankan kesederhanaan dan aksesibilitas yang dihargai pengembang Python.
Jika Anda ingin mempelajari lebih lanjut tentang manajemen dependensi atau Python secara umum, lihat sumber tambahan berikut:
Apakah UV lebih cepat daripada pip untuk manajemen paket Python?⌄
Ya, UV secara signifikan lebih cepat daripada pip, menawarkan peningkatan kecepatan 10–100x untuk instalasi paket dan resolusi dependensi. Lonjakan performa ini dicapai melalui implementasi Rust milik UV dan kemampuan unduhan paralel yang dioptimalkan. Terutama untuk proyek besar, tugas yang memerlukan menit dengan pip dapat selesai dalam hitungan detik dengan UV.
Bisakah saya menggunakan UV dengan berkas requirements.txt milik pip yang sudah ada?⌄
Ya, UV sepenuhnya kompatibel dengan berkas requirements.txt milik pip yang sudah ada dan dapat langsung mengimpornya menggunakan perintah uv pip install -r requirements.txt. UV mempertahankan kompatibilitas dengan ekosistem packaging Python sambil menyediakan performa yang lebih baik dan fitur manajemen dependensi yang lebih unggul.
Apa keunggulan UV dibanding Poetry dan Conda?⌄
UV menawarkan beberapa keunggulan dibanding Poetry dan Conda:
Performa lebih cepat berkat implementasi Rust
Penggunaan memori dan jejak sumber daya lebih rendah
Kompatibilitas lebih baik dengan perkakas Python yang ada
Alur kerja lebih sederhana dibanding Conda
Pendekatan lebih fleksibel dibanding struktur Poetry yang lebih opinionated
Walau Conda unggul untuk mengelola paket non-Python dan Poetry menawarkan manajemen proyek yang kuat, UV memberikan keseimbangan terbaik antara kecepatan dan kompatibilitas.
Apakah UV mendukung virtual environment?⌄
Ya, UV menyertakan manajemen virtual environment bawaan. Saat Anda menjalankan uv add untuk pertama kalinya di sebuah proyek, UV otomatis membuat virtual environment dan mengelolanya untuk Anda. UV menggabungkan pembuatan environment dan manajemen paket dalam satu alat, menyederhanakan alur kerja pengembangan Python dibanding menggunakan alat terpisah seperti pip dan virtualenv.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Kembangkan keterampilan data Anda, pelajari cara mengolah dan memvisualisasikan data, serta terapkan analisis canggih untuk mengambil keputusan berbasis data.
Apa itu Python UV?
UV adalah pengelola dan penginstal paket Python modern berperforma tinggi yang ditulis dengan Rust. UV dapat menjadi pengganti langsung untuk alat manajemen paket Python tradisional seperti
pip, dengan peningkatan signifikan dalam kecepatan, keandalan, dan resolusi dependensi.Alat ini mewakili generasi baru pengelola paket Python, dirancang untuk mengatasi titik nyeri umum dalam ekosistem Python seperti waktu instalasi yang lambat, konflik dependensi, dan kompleksitas pengelolaan environment. UV mencapai hal ini melalui arsitektur inovatif dan implementasi yang efisien, menjadikannya 10–100 kali lebih cepat dibanding pengelola paket tradisional.
Fitur utama yang membuat UV menonjol:
Baik untuk proyek pribadi kecil maupun aplikasi Python skala besar, UV menawarkan solusi manajemen paket yang tangguh dan efisien. Dalam tutorial ini, kami akan membahas semua aspek penting UV agar Anda bisa langsung menggunakannya.
Ringkasnya
curl -LsSf https://astral.sh/uv/install.sh | shuv initdan tambahkan dependensi denganuv add packageuv run script.py—tanpa perlu aktivasi virtual environment secara manualuv.lock) menjamin environment yang dapat direproduksi lintas mesinuvxuntuk menjalankan alat CLI sepertiblackdanrufftanpa instalasi permanenPerbedaan Antara UV, Poetry, PIP, Conda, dan virtualenv
Pertanyaan pertama yang sering diajukan pengembang sebelum beralih ke alat baru adalah "Bagaimana perbandingannya dengan yang sudah saya gunakan?". Dalam ranah manajemen dependensi dan proyek Python, empat alat ini sudah paling umum:
Mari bandingkan UV dengan masing-masing alat ini untuk membantu Anda memutuskan apakah UV adalah pilihan yang tepat sesuai kebutuhan Anda sebelum masuk ke detailnya.
UV vs. PIP dan
virtualenvPIP dan
virtualenvtelah lama menjadi alat tradisional untuk manajemen paket Python dan pembuatan virtual environment. Meski fungsional, UV menawarkan beberapa keunggulan menarik:virtualenvhanya membuat environment dan PIP hanya mengelola paket, UV menggabungkan keduanya dalam satu alat, menyederhanakan alur kerja.UV mempertahankan kompatibilitas penuh dengan ekosistem PIP sambil mengatasi keterbatasan utamanya. UV dapat menggunakan file
requirements.txtdan indeks paket yang sama, sehingga migrasi berjalan mulus. Perbedaan kunci:requirements.txtdasar.Walau PIP dan virtualenv tetap layak digunakan, arsitektur modern dan fungsi gabungan UV menjadikannya alternatif menarik bagi pengembang yang mencari performa lebih baik dan alur kerja yang lebih ringkas. Kemampuan menyisipkan UV ke proyek yang ada tanpa mengganggu proses yang mapan sangat menarik bagi tim yang ingin memodernisasi toolchain pengembangan Python secara bertahap.
UV vs. Conda
Mereka yang tidak menggunakan PIP dan
virtualenvbiasanya beralih ke Conda—dan ada alasannya:Namun bahkan pengguna Conda yang hardcore pun sebaiknya mempertimbangkan beralih ke UV karena berbagai alasan. (Untuk perbandingan lebih luas alat manajemen environment, lihat Anaconda vs Python: Exploring Their Differences.) Instalasi paket dan resolusi dependensi UV yang sangat cepat dapat mempercepat penyiapan environment secara dramatis dibanding kinerja Conda yang kadang lamban. Jejak sumber dayanya yang minimal berarti penggunaan memori lebih kecil dan waktu mulai lebih cepat. UV juga terintegrasi mulus dengan standar dan alat packaging Python yang ada, memudahkan bekerja dengan ekosistem Python yang lebih luas. Untuk proyek yang tidak memerlukan manajemen paket non-Python milik Conda, UV memberikan solusi yang lebih ringkas dan efisien yang dapat meningkatkan alur kerja pengembangan secara signifikan.
UV vs. Poetry
Saya pengguna Conda hampir tiga tahun, tetapi setelah mencoba Poetry beberapa kali, saya tidak pernah menyentuh Conda yang secepat kura-kura lagi. Saat saya mulai nyaman dengan Poetry, saya menemukan UV dan ia menawarkan kemampuan yang hampir sama dengan Poetry:
Namun, fitur pembeda UV adalah kecepatannya yang luar biasa dan penggunaan sumber daya yang minimal. Meski Poetry merupakan peningkatan besar atas alat tradisional, UV membawa kinerja ke level lain berkat implementasi Rust. Selain itu, kompatibilitas UV dengan packaging Python yang ada berarti ia dapat bekerja berdampingan dengan alat lain seperti
pip, menawarkan fleksibilitas yang kadang kurang pada pendekatan Poetry yang lebih opinionated.Berikut tabel yang merangkum perbedaan yang baru saja kita bahas:
Fitur
UV
PIP + virtualenv
Conda
Poetry
Implementasi
Rust
Python
Python
Python
Kecepatan
10–100x lebih cepat dari pip
Dasar
Lebih lambat dari pip
Lebih cepat dari pip
Penggunaan Memori
Sangat efisien
Lebih tinggi
Tinggi
Sedang
Manajemen Environment
Bawaan
Perlu alat terpisah
Bawaan
Bawaan
Resolusi Dependensi
Cepat, resolver modern
Dasar
Komprehensif
Resolver modern
Paket Non-Python
Tidak
Tidak
Ya
Tidak
Lock File
Ya
Tidak (requirements.txt dasar)
Ya
Ya
Struktur Proyek
Ya
Tidak
Tidak
Ya
Publikasi Paket
Ya
Ya (dengan twine)
Ya
Ya
Kompatibilitas
Bekerja dengan ekosistem pip yang ada
Alat standar Python
Ekosistem sendiri
Pendekatan lebih opinionated
Penanganan Galat
Pesan galat jelas
Dasar
Bagus
Bagus
Jejak Sumber Daya
Minimal
Sedang
Berat
Sedang
Fokus Komputasi Ilmiah
Tidak
Tidak
Ya
Tidak
Konsistensi Lintas Platform
Ya
Terbatas
Sangat baik
Baik
Jika menurut Anda UV layak untuk dicoba, lanjutkan membaca.
Memulai Dengan UV untuk Proyek Python
Di bagian ini, kita membahas cara memulai proyek dari nol menggunakan UV. Jika Anda butuh bantuan terlebih dahulu untuk menyiapkan environment pengembangan Python, lihat panduan kami. Kita akan membahas cara migrasi dari proyek yang sudah ada ke UV pada bagian berikutnya.
Menginstal UV
UV dapat diinstal untuk seluruh sistem menggunakan cURL di macOS dan Linux:
Dan dengan Powershell di Windows (pastikan Anda menjalankan Powershell dengan hak administrator):
UV juga tersedia melalui Homebrew:
Instalasi melalui PIP didukung tetapi tidak direkomendasikan:
Setelah itu, Anda dapat memverifikasi instalasi dengan menjalankan
uv version:Memperbarui UV
UV dapat memperbarui dirinya sendiri saat diinstal melalui installer mandiri:
Jika Anda menginstal UV melalui Homebrew, gunakan
brew upgrade uv. Anda juga dapat mengaktifkan autocompletion shell untuk perintah UV:Menginisialisasi proyek baru
Bekerja dengan proyek adalah inti pengalaman menggunakan UV. Mulailah dengan menginisialisasi proyek kosong menggunakan perintah
uv init:Perintah ini akan langsung membuat direktori
explore-uvbaru dengan konten berikut:Git diinisialisasi secara otomatis dan berkas terkait git utama seperti
.gitignoredanREADME.mdkosong akan dibuat. Berkas.python-versionberisi versi Python yang digunakan untuk proyek, sedangkanpyproject.tomlberfungsi sebagai berkas konfigurasi utama untuk metadata proyek dan dependensi. Berkas contohhello.pyjuga dibuat untuk membantu Anda mulai dengan cepat.Anda dapat mempelajari lebih lanjut tentang membuat proyek dari dokumentasi UV.
Menambahkan dependensi awal ke proyek
UV menggabungkan pembuatan environment dan instalasi dependensi dalam satu perintah —
uv add:Saat pertama kali menjalankan perintah
add, UV membuat virtual environment baru di direktori kerja saat ini dan menginstal dependensi yang ditentukan. Pada pemanggilan berikutnya, UV akan menggunakan ulang virtual environment yang ada dan hanya memasang atau memperbarui paket yang baru diminta, memastikan manajemen dependensi yang efisien.Proses penting lain yang terjadi pada setiap perintah
addadalah resolusi dependensi. UV menggunakan resolver dependensi modern yang menganalisis keseluruhan grafik dependensi untuk menemukan himpunan versi paket yang kompatibel dan memenuhi semua kebutuhan. Ini membantu mencegah konflik versi dan memastikan environment yang dapat direproduksi. Resolver mempertimbangkan faktor seperti batasan versi, kompatibilitas versi Python, dan persyaratan spesifik platform untuk menentukan himpunan paket optimal untuk dipasang.UV juga memperbarui berkas
pyproject.tomldanuv.locksetelah setiap perintah penambahan. Berikut tampilan berkas TOML setelah memasang Scikit-learn dan XGBoost:Untuk menghapus dependensi dari environment dan berkas
pyproject.toml, Anda dapat menggunakan perintahuv remove. Ini akan mencopot paket dan seluruh child-dependencies-nya:Kita akan membahas manajemen dependensi lebih rinci pada bagian berikutnya.
Menjalankan skrip Python dengan UV
Setelah Anda memasang dependensi yang diperlukan, Anda bisa mulai mengerjakan skrip Python seperti biasa. Jika Anda menggunakan VS Code, lihat panduan kami tentang menyiapkan VS Code untuk Python. UV menyediakan beberapa cara untuk menjalankan kode Python:
Untuk menjalankan skrip Python secara langsung, gunakan perintah
uv rundiikuti nama skrip Anda alih-alih sintaks biasapython script.py:Perintah
runmemastikan skrip dieksekusi di dalam virtual environment yang dibuat UV untuk proyek.Menjalankan skrip dengan dependensi inline (PEP 723)
UV mendukung metadata skrip inline PEP 723, yang memungkinkan Anda mendeklarasikan dependensi langsung di dalam skrip Python. Ini berguna untuk skrip mandiri yang membutuhkan paket tanpa menyiapkan proyek penuh:
Jalankan skrip dengan
uv run, dan UV secara otomatis membuat environment terisolasi dengan dependensi yang dideklarasikan:Ini sangat kuat untuk berbagi skrip yang dapat direplikasi dengan rekan kerja—siapa pun yang memasang UV dapat menjalankan skrip tanpa memasang dependensi secara manual.
Mengelola Versi Python di UV
Mengelola versi Python adalah bagian kunci dari manajemen dependensi. UV menyediakan perintah sederhana untuk mengontrol versi Python yang Anda gunakan. Mari jelajahi cara menggunakan perintah
uv python.Memasang versi Python dengan UV
UV dapat memasang dan mengelola versi Python secara langsung, menggantikan kebutuhan alat seperti
pyenv:Instalasi Python disimpan di
~/.local/share/uv/python/dan tidak mengganggu Python sistem Anda. Anda juga dapat mem-pin proyek ke versi Python tertentu:Ini memperbarui berkas
.python-versiondi direktori proyek Anda. UV kemudian akan menggunakan versi ini untuk semua operasi proyek.Mendaftar versi Python yang ada
Karena umum bagi sistem untuk sudah memiliki Python terpasang, UV secara bawaan dapat menemukan instalasi yang sudah ada. Misalnya, untuk menampilkan semua versi Python yang terdeteksi UV di sistem Anda, jalankan perintah berikut:
Perintah tersebut dengan benar mendeteksi versi Python yang saya pasang melalui Conda dan Brew.
Mengubah versi Python untuk proyek saat ini
Anda dapat beralih versi Python untuk proyek UV Anda kapan saja selama versi baru memenuhi spesifikasi di berkas
pyproject.tomlAnda. Misalnya, berkas berikut memerlukan Python versi 3.9 ke atas:Artinya Anda dapat mengubah versi Python di berkas
.python-versionke versi mana pun di atas itu, misalnya 3.11.7. Setelahnya, panggiluv sync.Perintah ini terlebih dahulu memeriksa instalasi Python yang ada. Jika versi yang diminta tidak ditemukan, UV akan mengunduh dan memasangnya di jalur
/Users/username/.local/share/uv/python. UV juga membuat virtual environment baru di direktori proyek, menggantikan yang lama.Perintah
uv syncmenangani semuanya secara otomatis—menciptakan virtual environment baru dan memasang ulang semua dependensi dari berkaspyproject.tomldanuv.lockAnda. Tidak perlu langkah instalasi tambahan.Perhatikan bahwa terkadang perintah
uvdapat memunculkan galatPermission Denied. Dalam kasus tersebut, pastikan gunakan perintahsudojika Anda menggunakan macOS atau Linux, atau jalankan command prompt dengan hak administrator jika Anda menggunakan Windows. Solusi yang lebih baik adalah mengubah kepemilikan direktori home UV ke pengguna:Untuk mempelajari lebih lanjut tentang mengelola versi Python dengan UV, lihat dokumentasi.
Apa Itu UV Tools dan Cara Menggunakannya?
Beberapa paket Python diekspos sebagai alat baris perintah seperti
blackuntuk pemformatan kode,flake8untuk linting,pytestuntuk pengujian,mypyuntuk pemeriksaan tipe, dan lain-lain. UV menyediakan dua antarmuka khusus untuk mengelola paket ini:1. Menggunakan
uv tool run:2. Menggunakan perintah
uvxyang lebih singkat dan nyaman:Saat perintah ini dijalankan, UV membuat virtual environment sementara di cache-nya. Alat yang diminta diinstal dan dijalankan dari sana. Dengan kata lain, Anda dapat menggunakan alat baris perintah tanpa memasangnya di virtual environment proyek, menghasilkan eksekusi yang lebih cepat dan dependensi proyek yang lebih bersih.
Poin kunci tentang antarmuka menjalankan tool:
uv tool install:Alat yang dipasang permanen tersedia secara global melalui
PATHAnda, tanpa mengotori virtual environment proyek mana pun. Anda dapat memperbaruinya denganuv tool upgrade ruffdan menampilkan semua alat yang terpasang denganuv tool list.Baca bagian UV Tools pada dokumentasi untuk mempelajari lebih lanjut tentang antarmuka ini.
Apa Itu Lock File di UV?
Lock file (
uv.lock) adalah bagian penting dari manajemen dependensi di UV. Saat Anda menjalankan perintahuv adduntuk memasang dependensi, UV secara otomatis membuat dan memperbarui berkasuv.lock. Lock file ini memiliki beberapa tujuan penting:UV mengelola lock file secara otomatis—Anda tidak perlu mengeditnya secara manual. Lock file sebaiknya dikomit ke kontrol versi untuk memastikan semua pengembang menggunakan versi dependensi yang sama.
Perbedaan Antara Lock File dan
requirements.txtWalau lock file dan
requirements.txtsama-sama melacak dependensi, keduanya memiliki tujuan dan kasus penggunaan yang berbeda. Lock file berisi informasi detail tentang versi paket yang persis beserta pohon dependensinya, memastikan environment konsisten selama pengembangan. Requirements.txt lebih sederhana, biasanya hanya mencantumkan dependensi langsung, dan didukung luas di berbagai alat Python.Lock file penting untuk pengembangan guna menjaga build yang dapat direproduksi dan mencegah konflik dependensi. Requirements.txt lebih cocok untuk skenario deployment atau saat berbagi kode dengan pengguna yang mungkin tidak menggunakan UV. Berkas ini juga diperlukan untuk kompatibilitas dengan alat dan layanan yang tidak mendukung format lock file UV.
Anda dapat mempertahankan keduanya dengan menggunakan lock file UV untuk pengembangan sambil menghasilkan
requirements.txtuntuk deployment. Untuk menghasilkanrequirements.txtdari lock file UV, gunakan perintah berikut:Perintah ini membuat berkas teks dengan versi yang dipin berdasarkan lock file Anda, sehingga mudah membagikan dependensi proyek dalam format standar sembari tetap mendapat manfaat dari manajemen dependensi canggih UV selama pengembangan.
Anda dapat mempelajari lebih lanjut tentang mengelola lock file dari dokumentasi.
Manajemen Dependensi Lanjutan dengan UV
Di bagian ini, kita akan mengeksplorasi metode yang lebih canggih untuk mengelola dependensi di UV. Kita akan mempelajari cara memperbarui dependensi, menjadikannya opsional, atau menjadikannya bagian dari grup dependensi.
Memperbarui dependensi
Dalam proyek jangka panjang, umum untuk memperbarui paket yang Anda gunakan agar mendapatkan fitur terbaru. Atau terkadang, paket yang Anda gunakan memperkenalkan breaking changes dan Anda ingin memastikan versi tersebut tidak terpasang secara tidak sengaja di environment Anda. Perintah
adddapat digunakan lagi dalam skenario ini dan skenario lain saat Anda perlu mengubah batasan atau versi dependensi yang ada.1. Memasang versi terbaru suatu paket:
2. Memasang versi tertentu:
3. Mengubah batasan versi paket:
4. Menjadikan dependensi spesifik platform:
Menambahkan dependensi opsional
Dependensi opsional adalah paket yang tidak diperlukan untuk fungsi inti proyek Anda tetapi mungkin dibutuhkan untuk fitur tertentu. Misalnya, Pandas memiliki ekstra
exceldan ekstraplotuntuk menghindari pemasangan parser Excel dan matplotlib kecuali jika seseorang secara eksplisit membutuhkannya. Dependensi opsional biasanya dipasang dengan sintakspip install pandas[plot, excel].Dengan UV, sintaks ini sedikit berbeda. Pertama, pastikan paket Pandas inti terpasang:
Kemudian, pasang dengan ekstra opsionalnya menggunakan notasi tanda kurung siku:
Setelah terselesaikan, dependensi ini akan tercantum di
pyproject.tomlAnda dengan format berikut:Grup dependensi
Grup dependensi memungkinkan Anda untuk mengelompokkan dependensi ke dalam grup logis, seperti dependensi pengembangan, pengujian, atau dokumentasi. Ini berguna untuk memisahkan dependensi produksi dari dependensi pengembangan.
Untuk menambahkan dependensi ke grup tertentu, gunakan flag
--group:Kemudian, pengguna dapat mengontrol grup mana yang akan dipasang menggunakan tag
--group,--only-group, dan--no-group.Beralih dari PIP dan Virtualenv ke UV
Migrasi dari PIP dan virtualenv ke UV mudah karena UV mempertahankan kompatibilitas dengan standar packaging Python yang ada. Berikut panduan langkah demi langkah agar transisi berjalan mulus:
1. Mengonversi proyek virtualenv yang sudah ada
Jika Anda memiliki proyek yang menggunakan
virtualenvdan pip, mulailah dengan menghasilkan berkasrequirements.txtdari environment Anda saat ini jika belum:Lalu, buat proyek UV baru di direktori yang sama:
Terakhir, pasang dependensi dari berkas requirements Anda:
2. Mengganti perintah umum pip/virtualenv
Berikut referensi cepat untuk mengganti perintah pip dan virtualenv umum dengan padanannya di UV:
Perintah pip/virtualenv
Padanan UV
python -m venv .venvuv venvpip install packageuv add packagepip install -r requirements.txtuv pip install -r requirements.txtpip uninstall packageuv remove packagepip freezeuv pip freezepip listuv pip listSetelah migrasi, Anda dapat dengan aman menghapus direktori virtualenv lama dan mulai menggunakan manajemen virtual environment UV. Transisi biasanya mulus, dan Anda selalu dapat kembali ke perintah
pipmelalui lapisan kompatibilitaspipmilik UV jika diperlukan.Menggunakan UV di CI/CD dan Docker
Kecepatan UV sangat berharga di pipeline CI/CD di mana pemasangan dependensi terjadi pada setiap build. Berikut contoh workflow GitHub Actions yang menggunakan UV:
Flag
--frozenmemastikan CI menggunakan versi persis seperti di lock file, dan akan gagal jika lock file kedaluwarsa. Ini menjamin build yang dapat direproduksi.Integrasi Docker
UV juga dapat mempercepat build image Docker secara signifikan:
Dengan menyalin berkas dependensi terlebih dahulu dan memasang sebelum menyalin kode sumber, Anda memaksimalkan caching layer Docker. Instalasi dependensi hanya dijalankan ulang saat
pyproject.tomlatauuv.lockberubah.Kesimpulan
UV merupakan lompatan besar dalam manajemen paket Python, menawarkan alternatif yang modern, cepat, dan efisien terhadap alat tradisional. Keunggulan utamanya meliputi:
Baik Anda memulai proyek baru atau memigrasikan yang sudah ada, UV menawarkan solusi andal yang dapat meningkatkan alur kerja pengembangan Python Anda secara signifikan. Kompatibilitasnya dengan alat yang ada menjadikannya pilihan mudah bagi pengembang yang ingin memodernisasi toolchain tanpa mengganggu proses saat ini.
Seiring ekosistem Python terus berkembang, alat seperti UV menunjukkan bagaimana teknologi modern seperti Rust dapat meningkatkan pengalaman pengembangan sambil mempertahankan kesederhanaan dan aksesibilitas yang dihargai pengembang Python.
Jika Anda ingin mempelajari lebih lanjut tentang manajemen dependensi atau Python secara umum, lihat sumber tambahan berikut: