Hoşgeldin Misafir

Yeni Nesil Python Proje ve Bağımlılık Yöneticisi: UV

Conrado Sol

29 Nis 2026
59 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Yaklaşık 10 yıldır Python ile kod yazıyorum. Ööğrenmesi kolay, kaynağı bol ve yorumlanan bir dile göre sunduğu pratik çözümlerle geliştirme yapması inanılmaz keyifli bir dil. Buraya kadar her şey harika.

Ancak Python ile büyüyen her geliştiricinin yolu günün birinde o karanlık patikaya sapar: Sanal ortam ve bağımlılık yönetimi çorbası. Farklı projelerde farklı Python sürümleriyle çalışmak, aynı kütüphanenin farklı versiyonlarını çakıştırmadan yönetmeye çalışmak yıllarca hepimizin gizli dertlerinden biri oldu. Bu sorunu çözmek için yıllar içinde pek çok araç eskitip vizyon değiştirdik; virtualenv, pyenv, pipenv, poetry ve daha nicesi... Hepsi kendi döneminde güzel işler yaptı, iyi-kötü hepimizin işini gördü. Ama dürüst olalım; hiçbir zaman "Tamam işte, aradığım kusursuz deneyim bu!" dedirtmedi.

Derken geçtiğimiz dönemde Astral ekibinin geliştirdiği UV aracıyla tanıştım. İlk denemeden sonra arkama yaslanıp şunu söylediğimi hatırlıyorum: "Meğer benim yıllardır aradığım şey tam olarak buymuş." (bu kısım, yazıyı yapay zeka ile yazmış diye bağırıyor sdfsdfsdf)

Karmaşık argümanlar, bitmek bilmeyen terminal komutları veya yavaşlık abidesi paket yükleme süreçleri yok. UV, projelerinizi en modern ve en zahmetsiz şekilde yönetmenizi sağlıyor.

Neden mi UV? Sizi sıkmadan, nokta atışı birkaç öne çıkan özelliğinden bahsetmek istiyorum:

1. Akıl Almaz Bir Hız (Rust Gücü)
UV, arkasına Rust dilinin gücünü almış bir araç. Abartmıyorum, PyPI üzerinden paket indirirken ve bağımlılıkları çözerken eski araçlara kıyasla kat ve kat daha hızlı. Projeyi ayağa kaldırırken geçen o kahve molası süreleri artık tarih oldu. Aradaki hız farkı ciddi anlamda devrimsel.

Benden Not: Kahve molası AI'ın abartısı. Evet uzun sürüyordu ama o kadar da değil. Burada asıl problem, bağımlılık çözmedeki gücü. Ha birde derleme paketlerini daha iyi açıyor.

2. Tek Araçla "Her Şey Dahil" Kolaylık
"Programı kurayım, sistem bash'ine tanımlayayım, her proje için gidip tek tek sanal ortam oluşturup aktif edeyim..." gibi egzantrik dertler UV ile tamamen bitiyor. Eskiden Python sürümü için ayrı, paket yönetimi için ayrı araç kurardık. UV artık Python sürümünün kendisini bile kendi yönetiyor. Siz sadece projenize odaklanıyorsunuz.

3. Maksimum Verimlilik: uv run Büyüsü
Uzun komut setlerine, "Sanal ortamı aktif ettim mi?", "Doğru ortamda mıyım?" diye düşünmeye gerek kalmıyor. Çoğu zaman terminale sadece uv run <komut> yazmanız yeterli. UV, arka planda doğru ortamı buluyor, yoksa yaratıyor ve kodunuzu çalıştırıyor.

4. Benim En Sevdiğim Detay: "Kullan-At" Scriptler
Bazen sadece tek bir Python scripti çalıştırmanız gerekir. Ama o scr*pt çok spesifik kütüphaneler ve farklı bir Python sürümü istiyordur. Sırf o tek dosya için saatlerce Python sürümü indirmekle, sanal ortam kurmakla, işiniz bitince de o çöpleri silmekle uğraşmıyorsunuz. uv run --with komutuyla UV sizin için geçici bir ortam hazırlıyor, scripti çalıştırıyor ve işi bitince her şeyi çöp kutusuna atıyor. Arkasında zerre iz bırakmıyor. Yahu bu sevilmez de ne yapılır? Yeirm onu yerim.

Kurulum ve Temel Komutlar​

Gelişen yapay zeka çağında artık forumlarda sayfalarca dokümantasyon hazırlamanın pek bir mantığı kalmadı. Zaten eskisi gibi uzun uzun okumuyoruz da. O yüzden bu yazıda amacım balık vermek ya da balık tutmayı öğretmek değil; "Bakın, balık tam olarak şurada yüzüyor" demek. Merak ettiğiniz uç senaryoları gidip yapay zekaya veya resmi dokümantasyona sorabilirsiniz.

Yine de elinizin altında bulunması için can alıcı birkaç komutu aşağıya bırakıyorum.

Resmi Dokümantasyon: https://docs.astral.sh/uv/

Dokümanda da göreceğiniz üzere; macOS/Linux için CURL, Windows için PowerShell veya direkt Pip ile saniyeler içinde kurulum yapabiliyorsunuz.
Kod:
curl -LsSf https://astral.sh/uv/install.sh

Bir projeyi UV ile başlatma:
Kod:
uv init .

Bulunduğunuz dizini anında bir UV projesi haline getirir ve modern bir altyapı kurar.

Projeye kütüphane eklemek:
Kod:
uv add requests flask

Projeye requests ve flask kütüphanelerini ekler. Sadece enter tuşuna basın ve yükleme hızını izleyin, ne demek istediğimi anlayacaksınız.

Projeden kütüphane silmek:
Kod:
uv remove requests

İlgili kütüphaneyi temiz bir şekilde projeden ve bağımlılık listesinden kazır.

Mevcut proje ile senkronize olma:
Kod:
uv sync

Daha önce geliştirilmiş veya repodan yeni çekilmiş bir projenin tüm dünyasını lokalinizle tek komutta senkronize eder.

Projeyi / Scripti başlatmak:
Kod:
uv run main.py
uv run manage.py runserver

İlk komut projenizi çalıştırır. İkincisini de Django kullanan dostlar için aşinalık olsun diye örnek olarak ekledim. Sanal ortamı activate etmenize gerek bile yok.

Yeni Python Sürümü Yüklemek:
Kod:
uv python install 3.12

Sisteminizde olmasa bile Python 3.12 sürümünü tık diye indirir ve projeye bağlar. Şu rahatlığa bakar mısınız?

Özetle dostlar; Python dünyasındaysanız ve hala eski usul paket yöneticileriyle vakit kaybediyorsanız, UV'ye şans verin. Pişman olmayacaksınız.