zimport - Çok sayıda Python paketini sıkıştırarak yönetme
(github.com/waveware4ai)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 standartzipimportaracı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 Javajardosyaları 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ıngetresourceyaklaşımına benzer şekilde dahili dosyaları (ör. ortam dosyaları) okuma desteği - Derlenmiş
.pycdosyası desteği (name.cpython-version.pycve__pycache__klasörü)
Kullanılan teknolojiler
importlib,meta_path,path_hooks- function intercept (
standard open,stat,read,ctypes.WinDLL,ctypes.CDLLvb.)
Kullanım ortamı
pythonwin/linux/macosx desteğipythonsürüm 3.8~3.12 desteği
Kullanım yöntemi
python -m pip install zimport
import zimport
lib/site-packagedizinindeki paketleri topluca sıkıştırıpsys.path'e eklemeniz yeterlidir; sorunsuz çalışır.- Elbette vaktiniz varsa paketleri tek tek sıkıştırıp, Java
jardosyalarında olduğu gibi bağımlılıklara göre paketlerisys.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ğintransformers) henüz desteklenmiyor, ancaktorch,torchvision,numpy,pandasgibi büyük paketlerin sorunsuz çalıştığını doğruladım.
- 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.
- 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
cythonkullananavpaketi 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.
transformerspaketi artık destekleniyor.Asıl hedef, ComfyUI tabanlı Wan2.1'in (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1) portable şekilde çalışmasını sağlamaktı; az önce
transformersile ilgili kaynak kod değişikliklerini tamamlayıpzimportkullanarak çalıştırdım ve sorunsuz çalışıyor.Kullandığınız için teşekkürler.
https://github.com/waveware4ai/zimport