8 पॉइंट द्वारा waveware 2025-05-31 | 2 टिप्पणियां | WhatsApp पर शेयर करें

जब Python पैकेजों को मैनेज करते समय बहुत सारी फाइलें बोझ लगने लगें, तब काम आने वाले zimport का परिचय प्रस्तुत है.

परिचय

  • zimport Python के standard zipimport का विकल्प और उसका बेहतर रूप है.
  • 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-package directory में पैकेजों को एक साथ 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 बिना किसी समस्या के काम करते हैं, यह पुष्टि की गई है.

https://github.com/waveware4ai/zimport

  • साथ ही, यह PortablePython के साथ बहुत अच्छी तरह मेल खाता है. इसे भी GitHub पर अपलोड किया गया है. linux version को सीधे compile किया गया है, और windows version को embedded संस्करण को संशोधित करके बनाया गया है.

https://github.com/waveware4ai/PortablePython

  • उपयोग के दौरान आने वाले bugs या समस्याओं की रिपोर्ट करेंगे, तो मैं उन्हें बेहतर बनाने की कोशिश करूंगा.

धन्यवाद. आपका दिन शुभ हो

2 टिप्पणियां

 
waveware 2025-06-11
  • cython का उपयोग करने वाले av पैकेज आदि के import से संबंधित पूछताछ आई थी, इसलिए इसे काम करने योग्य बनाने के लिए fix किया गया है.
    अगर कोई दूसरा पैकेज भी काम नहीं करता है, तो कृपया report करें, हम उसे सुधार देंगे.
 
waveware 2025-06-02
  • transformers पैकेज अब भी समर्थित है।
    मूल लक्ष्य 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