मैं एक पायथन एप्लिकेशन बना रहा हूं और अपने ग्राहकों को पायथन और मॉड्यूल स्थापित करने के लिए मजबूर नहीं करना चाहता।
तो, क्या पायथन स्क्रिप्ट को एक स्टैंडअलोन निष्पादन योग्य बनाने का एक तरीका है?
मैं एक पायथन एप्लिकेशन बना रहा हूं और अपने ग्राहकों को पायथन और मॉड्यूल स्थापित करने के लिए मजबूर नहीं करना चाहता।
तो, क्या पायथन स्क्रिप्ट को एक स्टैंडअलोन निष्पादन योग्य बनाने का एक तरीका है?
जवाबों:
आप उपयोग कर सकते हैं py2exe पहले से ही जवाब दिए और उपयोग के रूप में cython अपने प्रमुख कन्वर्ट करने के लिए .py
में फ़ाइलों .pyc
की तरह, सी संकलित फ़ाइलें, .dll
Windows में और .so
आम की तुलना में वापस लौटने के लिए, बहुत कठिन लिनक्स में .pyo
और .pyc
फ़ाइलें (और यह भी प्रदर्शन में लाभ!)
आप पायथन कार्यक्रमों को स्टैंडअलोन निष्पादन योग्य के रूप में पैकेज करने के लिए PyInstaller का उपयोग कर सकते हैं । यह विंडोज, लिनक्स और मैक पर काम करता है।
PyInstaller क्विकस्टार्ट
PyPI से PyInstaller स्थापित करें:
pip install pyinstaller
अपने कार्यक्रम की निर्देशिका पर जाएं और चलाएं:
pyinstaller yourprogram.py
यह एक उपनिर्देशिका नामक बंडल उत्पन्न करेगा
dist
।अधिक विस्तृत पूर्वाभ्यास के लिए, मैनुअल देखें ।
आप Nuitka की जांच करना चाह सकते हैं । यह अजगर स्रोत कोड लेता है और इसे C ++ API कॉल में परिवर्तित करता है। फिर यह एक निष्पादन योग्य बाइनरी (लिनक्स पर ईएलएफ) में संकलित करता है। यह अब कुछ वर्षों के लिए है और पायथन संस्करणों की एक विस्तृत श्रृंखला का समर्थन करता है।
यदि आप इसका उपयोग करते हैं तो आपको संभवतः एक प्रदर्शन सुधार भी मिलेगा। सिफारिश की।
मैं पायथन 2.7 का उपयोग करके खिड़कियों पर स्टैंडअलोन फाइलें बनाने के बारे में कुछ उपयोगी जानकारी संकलित करना चाहूंगा।
मैंने py2.exe का उपयोग किया है और यह काम करता है, लेकिन मुझे कुछ समस्याएं थीं।
इसने विंडोज 64 बिट्स में सिंगल फाइल बनाने के लिए कुछ समस्याएँ दिखाई हैं: py2.exe के साथ बंडल_फाइल्स = 1 का उपयोग करना काम नहीं कर रहा है ;
यह काम करने के लिए एक setup.py फ़ाइल बनाने के लिए आवश्यक है। http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
मुझे निर्भरता के साथ समस्याएं हैं जिन्हें आपको सेटअप फ़ाइल में पैकेज आयात करके हल करना होगा;
मैं इसे PyQt के साथ मिलकर काम करने में सक्षम नहीं था।
इस आखिरी कारण ने मुझे PyInstaller http://www.pyinstaller.org/ की कोशिश की ।
मेरी राय में, यह बहुत बेहतर है क्योंकि:
मेरा सुझाव है कि उदाहरण के लिए निम्नलिखित लाइनों के साथ एक .bat फ़ाइल बनाना (pyinstaller.exe विंडोज पथ में होना चाहिए):
pyinstaller.exe --onefile MyCode.py
आप अन्य विकल्पों ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ) के बीच एक एकल फ़ाइल बना सकते हैं ।
मुझे PyInstaller और मल्टीप्रोसेसिंग पैकेज का उपयोग करने में केवल एक समस्या थी जो इस नुस्खा का उपयोग करके हल की गई थी: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing ।
इसलिए, मुझे लगता है कि, कम से कम अजगर 2.7 के लिए, एक बेहतर और सरल विकल्प PyInstaller है।
--onefile
झंडा आप इसे विंडोज पर पोर्टेबल बनाने के लिए मदद नहीं करेगा, क्योंकि निष्पादन अभी भी साथ लिंक करना चाहता है api-ms-win-crt-runtime-l1-1-0.dll
पुस्तकालय (या / और अन्य) के माध्यम से जो स्थापित किया जाना चाहिए vcredist
पैकेज। तो एक निर्भरता अभी भी है और चलाने से पहले स्थापित किया जाना चाहिए।
हां, पायथन स्क्रिप्ट को स्टैंडअलोन एक्जीक्यूटेबल में संकलित करना संभव है।
PyInstaller का उपयोग Windows , Linux , Mac OS X , FreeBSD , Solaris और AIX के तहत Python प्रोग्राम्स को स्टैंड-अलोन एक्जीक्यूटिव में बदलने के लिए किया जा सकता है । यह अनुशंसित कन्वर्टर्स में से एक है।
py2.exe केवल Windows प्लेटफ़ॉर्म में पायथन स्क्रिप्ट को निष्पादन योग्य में परिवर्तित करता है।
साइथन पायथन प्रोग्रामिंग भाषा और विस्तारित साइथन प्रोग्रामिंग भाषा दोनों के लिए एक स्थिर संकलक है।
और एक तीसरा विकल्प है cx_Freeze
, जो क्रॉस-प्लेटफॉर्म है।
cx_Freeze
of के अंत से पीपीआई पर कोई सूचीबद्ध रिलीज़ नहीं हैं । क्या इस परियोजना को छोड़ दिया गया था?
आपको py2.exe पसंद आ सकता है । तुम भी वहाँ लिनक्स में यह करने के लिए infos में मिल जाएगा
Py2.exe का उपयोग करें .... नीचे सेट की गई फ़ाइलों का उपयोग करें:
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=['PlotMemInfo.py'],
options={
'py2exe': {
'packages' : ['matplotlib'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
मुझे pyinstaller पसंद है - विशेष रूप से " विंडोेड " प्रकार:
pyinstaller --onefile --windowed myscript.py
यह एक डिस्टर्ब / फोल्डर में एक सिंगल * .exe फाइल बनाएगा।
मैं
अजगर 2.3 - 2.7 जैसे बेहतर पिछड़े संगतता के लिए pyinstaller की भी सिफारिश करता हूं ।
के लिए py2exe , आप अजगर 2.6 होनी चाहिए
पायथन 3.2 लिपियों के लिए एकमात्र विकल्प Cxfreeze है। इसे स्रोतों से बनाएँ अन्यथा यह काम नहीं करेगा।
अजगर 2.x के लिए मैं pyinstaller का सुझाव देता हूं क्योंकि यह CxFreeze के विपरीत एक एकल निष्पादन योग्य में एक अजगर प्रोग्राम को पैकेज कर सकता है जो कि पुस्तकालयों को भी आउटपुट करता है।
py2exe आपके द्वारा इच्छित exe फ़ाइल बना देगा लेकिन आपको अपने नए exe का उपयोग करने जा रहे मशीन पर MSVCR90.dll का समान संस्करण होना चाहिए। अधिक जानकारी के लिए http://www.py2exe.org/index.cgi/Tutorial देखें ।
आप @ https://wiki.python.org/moin/DistributionUtilities में सूचीबद्ध वितरण उपयोगिताओं की सूची पा सकते हैं ।
मैं बीबफ्रीज का उपयोग करता हूं और यह बहुत अच्छी तरह से काम कर रहा है (फिर भी अजगर 3 समर्थन के लिए है)।
.so
फ़ाइलों में संकलित करेगा , या .egg फ़ाइलों को सीधे कॉपी करेगा और वे सभी एक ही निर्देशिका (या एकल फ़ाइल के रूप में) में मौजूद रहेंगे। कोई स्थापना की आवश्यकता है।
Pyinstaller का उपयोग करते हुए, मैंने बनाने के बजाय .exe से शॉर्टकट का उपयोग करके एक बेहतर तरीका पाया --onefile
। वैसे भी आसपास कुछ डेटा फाइलें हैं और यदि आप साइट-आधारित ऐप चला रहे हैं तो आपका प्रोग्राम html, js, css फ़ाइलों पर भी निर्भर करता है। इन सभी फाइलों को कहीं ले जाने का कोई मतलब नहीं है .. इसके बजाय अगर हम काम करने के तरीके को आगे बढ़ाते हैं।
Exe के लिए एक शॉर्टकट है, शीर्ष पर ले जाने और लक्ष्य रखा और शुरू में पथ निर्दिष्ट किया गया है, जिले के लिए जा रहा \ फ़ोल्डर संबंधित पथ के लिए:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe
Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
करने के लिए "GTFS-प्रबंधक" का नाम बदलने तो कुछ भी करने के लिए शॉर्टकट का नाम बदल सकते
डबल अब जब मैं शॉर्टकट पर क्लिक करें, ऐसा लगता है जैसे मैंने फ़ाइल को अजगर बना दिया है! मैंने इस दृष्टिकोण को इस --onefile
रूप में बेहतर पाया :
ओह, निर्माण के बाद बिल्ड फ़ोल्डर को हटाने के लिए याद रखें, आकार पर बचाएगा।
ग, सी संकलन और gcc के साथ लिंक करने के लिए Cython का उपयोग करें। एक और हो सकता है, कोर कार्यों को ग में करें (जिन्हें आप रिवर्स करना कठिन बनाना चाहते हैं), उन्हें संकलित करें और संकलित कोड को आयात करने के लिए अजगर को बढ़ावा देने का उपयोग करें (साथ ही आपको बहुत तेज़ कोड निष्पादन मिलता है)। फिर वितरित करने के लिए किसी भी उपकरण का उपयोग करें।
मुझे बताया गया है कि PyRun, https://www.egenix.com/products/python/PyRun/ भी एक विकल्प है।