zipapp मॉड्यूल (पायथन 3.5+) पायथन कोड वाले ज़िप फाइल्स बनाने और प्रबंधित करने की सुविधा देता है जिन्हें पायथन इंटरप्रेटर द्वारा सीधे निष्पादित किया जा सकता है।
कमांड-लाइन इंटरफेस
बेसिक उपयोग
# myapp फोल्डर में example.py होना चाहिए जिसमें main() फंक्शन हो python -m zipapp myapp -m "example:main"
फोल्डर संरचना
myapp/ ├── example.py └── __init__.py (वैकल्पिक)
example.py
def main():
print('Hello World')
if __name__ == '__main__':
main()
आर्काइव बनाएं और चलाएं
# आर्काइव बनाएं python -m zipapp myapp -m "example:main" # आउटपुट: myapp.pyz # चलाएं python myapp.pyz # आउटपुट: Hello World
कमांड-लाइन विकल्प
| विकल्प | विवरण |
|---|---|
-o <output>, --output=<output> | आउटपुट फाइल नाम (डिफ़ॉल्ट: <source>.pyz) |
-p <interpreter>, --python=<interpreter> | इंटरप्रेटर निर्दिष्ट करें (shebang लाइन) |
-c, --compress | डिफ्लेट कंप्रेशन के साथ फाइल्स कंप्रेस करें |
-m <module:func>, --main=<module:func> | एंट्री पॉइंट (module:function) |
--info | आर्काइव जानकारी दिखाएं |
उदाहरण: कस्टम विकल्पों के साथ
# कंप्रेस्ड आर्काइव, कस्टम नाम, स्पष्ट इंटरप्रेटर python -m zipapp myapp -m "example:main" -o myapp.pyz -p "/usr/bin/env python3" -c
प्रोग्रामेटिक API
zipapp.create_archive(source, target, interpreter, main, compressed)
import zipapp
# बेसिक
zipapp.create_archive('myapp', 'myapp.pyz')
# पूर्ण विकल्पों के साथ
zipapp.create_archive(
source='myapp',
target='dist/myapp.pyz',
interpreter='/usr/bin/env python3',
main='example:main',
compressed=True
)
zipapp.get_interpreter(archive)
import zipapp
interpreter = zipapp.get_interpreter('myapp.pyz')
print(f"इंटरप्रेटर: {interpreter}")
आर्काइव संरचना
myapp.pyz ├── #!/usr/bin/env python3 (shebang यदि -p दिया गया) ├── __main__.py (एंट्री पॉइंट - main() कॉल करता है) ├── example.py └── अन्य मॉड्यूल्स...
उन्नत: मल्टीपल एंट्री पॉइंट्स
एक आर्काइव में एक ही एंट्री पॉइंट हो सकता है। मल्टीपल कमांड्स के लिए:
# __main__.py में
import sys
from myapp import cli
if __name__ == '__main__':
# sys.argv के आधार पर अलग फंक्शन कॉल करें
if len(sys.argv) > 1 and sys.argv[1] == 'cmd2':
cli.cmd2()
else:
cli.main()
सीमाएं
- केवल प्योर-पायथन पैकेजेस (C एक्सटेंशन नहीं)
- निर्भरताएं शामिल नहीं होतीं (अलग से इंस्टॉल करें या
shiv,pexजैसे टूल्स उपयोग करें) - पायथन 3.5+ आवश्यक
विकल्प
- shiv - निर्भरताओं के साथ सेल्फ-कंटेन्ड आर्काइव
- pex - पायथन एक्ज़ीक्यूटेबल आर्काइव्स
- PyInstaller - स्टैंडअलोन एक्ज़ीक्यूटेबल्स
- cx_Freeze - फ्रीजिंग टूल
उपयोग के मामले
- सरल CLI टूल्स वितरण
- एयर-गैप्ड एनवायरनमेंट्स में डिप्लॉयमेंट
- सिंगल-फाइल स्क्रिप्ट्स शेयर करना
- कंटेनर इमेज आकार कम करना