uv ile bağımsız çalışabilen Python betikleri oluşturma
(blog.dusktreader.dev)- Python betiklerinde
uvkullanarak bağımlılık kurmadan anında çalıştırılabilen bağımsız betikler oluşturma yöntemi - Go projelerinde API testi için Python betikleri kullanılırken ortaya çıkan pratik bir yaklaşım
Mevcut yöntemin sınırları
httpx,IPython,logurugibi paketleri kullanan Python betiklerini çalıştırmak için şu seçeneklerden biri gerekiyordu- paketleri doğrudan sistem Python'una kurmak
- sanal ortam oluşturup paketleri kurduktan sonra çalıştırmak
- Her iki yöntem de zahmetli, sistem ortamını etkileyebilir ve başkalarıyla paylaşırken uzun açıklamalar gerektirir
uv ile kolay betik çalıştırma
uv, bir Python paket yöneticisi vepipalternatifi olarak, Python betiklerini izole bir çalışma ortamında çalıştırmayı sağlar# /// scriptyorumu ile bağımlılık bilgisi betiğin içine doğrudan yazılabilir# /// script # dependencies = ["ipython", "httpx", "loguru"] # ///- Bu ayarı içeren bir betik şu komutla çalıştırılabilir:
uv run jam_users.py uv, geçici bir sanal ortamı otomatik olarak oluşturur, gerekli paketleri kurar ve ardından betiği tek seferde çalıştırır
Çalıştırılabilir betik haline getirme
- Normal Python betiklerinde olduğu gibi
#!/usr/bin/env pythonile çalıştırılabilir hale getirilebilir, ancak bu yöntemuvscript yorumunu tanımaz - Bunun yerine, aşağıdaki gibi
shebangiçine doğrudanuvkomutu yazılarak sorun çözülebilir#!/usr/bin/env -S uv run --script # /// script # dependencies = ["ipython", "httpx", "loguru"] # /// - Bu yöntemle
chmod +xsonrasında betik doğrudan çalıştırılabilir; diğer Unix sistemlerinde de yalnızcauvkuruluysa aynı şekilde çalışır:./jam_users.py
Avantajlar ve kullanım alanı
uvyaklaşımı, betikleri başkalarına iletirken çok kullanışlıdır- Karmaşık ön kurulumlar olmadan gerekli paketler ve ortam otomatik olarak hazırlanır
- Sistem Python'unu veya global ortamı kirletmez
- Tek bir betikle hem çalıştırma hem de bağımlılık yönetimi çözülür
Yazar, geçmişte Python betiklerini başkalarına iletirken kurulum açıklamalarının karmaşık olduğunu, ancak artık bu sorunu
uvile kolayca çözebildiğini anlatıyor
- Küçük test betiklerinin yanı sıra gerçek iş otomasyon betiklerinde de etkilidir
Henüz yorum yok.