zimport - अनगिनत Python पैकेजों को compress करके प्रबंधित करना
(github.com/waveware4ai)जब Python पैकेजों को मैनेज करते समय बहुत सारी फाइलें बोझ लगने लगें, तब काम आने वाले zimport का परिचय प्रस्तुत है.
परिचय
zimportPython के standardzipimportका विकल्प और उसका बेहतर रूप है.zimportका उपयोग zip-archives से Python पैकेज लोड और मैनेज करने के लिए किया जाता है. यानी, Java jar की तरह Python पैकेजों को मैनेज किया जा सकता है. साथ ही dynamic libraries (.dll,.pyd,.so) लोड करने का भी समर्थन है.- इस टूल को बनाने के बाद मेरी Python कार्य directory लगभग 160GB और लाखों फाइलों से घटकर 80G और लगभग 10 हज़ार फाइलों के स्तर तक आ गई.
मुख्य फीचर्स
- zip-archive से dynamic library loading का समर्थन (
.pyd,.dll,.so,.dylib) - zip-archive के भीतर
read()करते समय Java केgetresourceकी तरह आंतरिक फाइलें (जैसे environment files) पढ़ने का समर्थन - compiled
.pycफाइलों का समर्थन (name.cpython-version.pycऔर__pycache__folder)
उपयोग की गई तकनीकें
importlib,meta_path,path_hooks- function intercept (standard
open,stat,read,ctypes.WinDLL,ctypes.CDLLआदि)
उपयोग वातावरण
- Python win/linux/macosx समर्थन
- Python version 3.8~3.12 समर्थन
उपयोग विधि
python -m pip install zimport
import zimport
lib/site-packagedirectory में पैकेजों को एक साथ compress करके, बसsys.pathमें जोड़ दें, तो यह सामान्य रूप से काम करता है.- बेशक, यदि आपके पास समय हो, तो पैकेजों को अलग-अलग compress करके, Java के jar की तरह dependencies के अनुसार पैकेजों को
sys.pathमें जोड़ सकते हैं. - साथ ही, एक बार compress किया गया package share करके इस्तेमाल किया जा सकता है, इसलिए मेरा मानना है कि इससे hard disk space की बर्बादी कम हो सकती है.
अंत में
- source को GitHub पर सार्वजनिक किया गया है और वर्तमान version 0.1.4 है. कुछ packages (उदाहरण के लिए
transformers) अभी तक समर्थित नहीं हैं, लेकिनtorch,torchvision,numpy,pandasजैसे major packages बिना किसी समस्या के काम करते हैं, यह पुष्टि की गई है.
- साथ ही, यह PortablePython के साथ बहुत अच्छी तरह मेल खाता है. इसे भी GitHub पर अपलोड किया गया है. linux version को सीधे compile किया गया है, और windows version को embedded संस्करण को संशोधित करके बनाया गया है.
- उपयोग के दौरान आने वाले bugs या समस्याओं की रिपोर्ट करेंगे, तो मैं उन्हें बेहतर बनाने की कोशिश करूंगा.
धन्यवाद. आपका दिन शुभ हो
2 टिप्पणियां
cythonका उपयोग करने वालेavपैकेज आदि के import से संबंधित पूछताछ आई थी, इसलिए इसे काम करने योग्य बनाने के लिए fix किया गया है.अगर कोई दूसरा पैकेज भी काम नहीं करता है, तो कृपया report करें, हम उसे सुधार देंगे.
मूल लक्ष्य ComfyUI-आधारित Wan2.1 (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1) को portable तरीके से चलाना था, और अभी-अभी transformers से जुड़े source modifications पूरे करने के बाद, zimport का उपयोग करके इसे चलाया तो यह अच्छी तरह काम कर रहा है।
इस्तेमाल करने के लिए धन्यवाद।
https://github.com/waveware4ai/zimport