यह मानते हुए कि आप पायथन 2.6 या बाद के संस्करण का उपयोग कर रहे हैं, आप स्क्रिप्ट को एक ज़िप फ़ाइल में पैकेज कर सकते हैं, एक `__main__.py` जोड़ सकते हैं और ज़िप फ़ाइल को सीधे चला सकते हैं। उदाहरण के लिए, यदि आप सभी फ़ाइलों को `my_app.zip` नाम की फ़ाइल में ज़िप करते हैं और अपनी मुख्य स्क्रिप्ट को `__main__.py` में रखते हैं, तो आप इस ज़िप को पायथन का उपयोग करके चला सकते हैं:
$ python my_app.zip
थर्ड-पार्टी टूल: stickytape
यदि आप थर्ड-पार्टी स्क्रिप्ट का उपयोग करना चाहते हैं, तो आप `stickytape` मॉड्यूल देख सकते हैं। इसका उपयोग एक पायथन स्क्रिप्ट और उस पर निर्भर करने वाले किसी भी पायथन मॉड्यूल को सिंगल-फ़ाइल पायथन स्क्रिप्ट में बदलने के लिए किया जा सकता है। `stickytape` इंस्टॉल करने के लिए, अपना टर्मिनल खोलें और दर्ज करें:
$ pip install stickytape
यह मानते हुए कि आपके सभी स्क्रिप्ट और निर्भरताएं `scripts/sample` फ़ोल्डर में हैं, आप `stickytape` का उपयोग निम्न तरीके से कर सकते हैं:
$ stickytape scripts/sample --add-python-path . > ./sample-standalone
आप इसे फ़ाइल आर्गुमेंट देने के लिए `--output-file` पैरामीटर का भी उपयोग कर सकते हैं:
$ stickytape scripts/sample --add-python-path . --output-file ./sample-standalone
आधुनिक बंडलिंग टूल्स (2024+)
1. PyInstaller - स्टैंडअलोन एक्जीक्यूटेबल
pip install pyinstaller
pyinstaller --onefile main.py
# dist/main बनाता है
2. Shiv - पायथन जिपऐप (तेज़ स्टार्टअप)
pip install shiv
shiv -c myapp:main -o app.pyz -r requirements.txt .
./app.pyz
3. Pex - पुनरुत्पादन योग्य वातावरण
pip install pex
pex -r requirements.txt -e myapp:main -o app.pex
./app.pex
4. zipapp (मानक लाइब्रेरी, पायथन 3.5+)
# संरचना:
myapp/
├── __main__.py
├── module1.py
└── module2.py
python -m zipapp myapp -m "myapp:main" -o myapp.pyz
python myapp.pyz
5. cx_Freeze - क्रॉस-प्लेटफॉर्म फ्रीजर
pip install cx_Freeze
# setup.py बनाएं
python setup.py build
6. Nuitka - पायथन कंपाइलर (C में संकलित)
pip install nuitka
python -m nuitka --standalone main.py
तुलना
| टूल | आउटपुट | गति | C एक्सटेंशन | प्लेटफॉर्म |
|---|---|---|---|---|
| PyInstaller | बाइनरी | मध्यम | हां | क्रॉस |
| Shiv | .pyz | तेज़ | हां* | पायथन आवश्यक |
| Pex | .pex | तेज़ | हां* | पायथन आवश्यक |
| zipapp | .pyz | तेज़ | नहीं | पायथन आवश्यक |
| Nuitka | बाइनरी | सबसे तेज़ | हां | क्रॉस |
| cx_Freeze | बाइनरी | मध्यम | हां | क्रॉस |
सिफारिश
- सरल प्योर-पायथन ऐप्स: `zipapp` (कोई निर्भरता नहीं)
- निर्भरता वाले ऐप्स: `Shiv` या `Pex`
- स्टैंडअलोन बाइनरी (कोई पायथन आवश्यक नहीं): `PyInstaller` या `Nuitka`
- अधिकतम प्रदर्शन: `Nuitka`