8 puan yazan waveware 2025-05-31 | 2 yorum | WhatsApp'ta paylaş

Python paketlerini yönetirken sayısız dosyanın yük olmaya başladığı durumlarda işinize yarayabilecek zimportu tanıtıyorum.

Tanıtım

  • zimport, Python'un standart zipimport aracının yerine geçen ve onu geliştiren bir araçtır.
  • zimport, Python paketlerini zip arşivlerinden yüklemek ve yönetmek için kullanılır. Yani Python paketlerini Java jar dosyaları gibi yönetebilirsiniz. Ayrıca dinamik kütüphane (.dll, .pyd, .so) yüklemeyi de destekler.
  • Bu aracı yaptıktan sonra Python çalışma dizinim yaklaşık 160 GB ve milyonlarca dosyadan, 80 GB ve 10 bin dosya seviyesine düştü.

Temel özellikler

  • zip arşivinden dinamik kütüphane yükleme desteği (.pyd, .dll, .so, .dylib)
  • zip arşivi içinde read() sırasında, Java'nın getresource yaklaşımına benzer şekilde dahili dosyaları (ör. ortam dosyaları) okuma desteği
  • Derlenmiş .pyc dosyası desteği (name.cpython-version.pyc ve __pycache__ klasörü)

Kullanılan teknolojiler

  • importlib, meta_path, path_hooks
  • function intercept (standard open, stat, read, ctypes.WinDLL, ctypes.CDLL vb.)

Kullanım ortamı

  • python win/linux/macosx desteği
  • python sürüm 3.8~3.12 desteği

Kullanım yöntemi

python -m pip install zimport
import zimport

  • lib/site-package dizinindeki paketleri topluca sıkıştırıp sys.path'e eklemeniz yeterlidir; sorunsuz çalışır.
  • Elbette vaktiniz varsa paketleri tek tek sıkıştırıp, Java jar dosyalarında olduğu gibi bağımlılıklara göre paketleri sys.path'e ekleyebilirsiniz.
  • Ayrıca bir kez sıkıştırılmış paketler paylaşılarak kullanılabildiği için sabit disk alanı israfını azaltabileceğini düşünüyorum.

Son olarak

  • Kaynak kodunu GitHub'da yayımladım ve mevcut sürüm 0.1.4. Bazı paketler (örneğin transformers) henüz desteklenmiyor, ancak torch, torchvision, numpy, pandas gibi büyük paketlerin sorunsuz çalıştığını doğruladım.

https://github.com/waveware4ai/zimport

  • Ayrıca portable Python ile de çok iyi uyum sağlıyor. Bunu da GitHub'a yükledim. Linux sürümünü doğrudan derledim, Windows sürümünde ise embedded sürümü uyarladım.

https://github.com/waveware4ai/PortablePython

  • Kullanım sırasında ortaya çıkan hata veya sorunları raporlarsanız geliştirmeye devam edeceğim.

Teşekkürler. İyi günler dilerim.

2 yorum

 
waveware 2025-06-11
  • cython kullanan av paketi gibi import ile ilgili bir soru gelmişti; çalışacak şekilde düzelttim.
    Başka bir paket de çalışmıyorsa lütfen bildirin, ben de düzeltelim.
 
waveware 2025-06-02