ऐसा करने के लिए कई, कई, कई, कई, कई, कई, कई तरीके हैं। मैं प्रत्येक के पीछे सिद्धांतों पर स्केट करूंगा, और यह केस का उपयोग करेगा।
1. एक अजगर पर्यावरण
इसे करने के कई तरीके हैं। pipenv
, कोंडा, requirments.txt
आदि।
इनमें से कुछ के साथ, आप अजगर संस्करणों को निर्दिष्ट कर सकते हैं। दूसरों के साथ, बस अजगर संस्करणों की एक श्रृंखला निर्दिष्ट करें जिन्हें आप जानते हैं कि यह इसके साथ काम करता है - उदाहरण के लिए, यदि आप अजगर 3.7 का उपयोग कर रहे हैं, तो यह 3.6 का समर्थन नहीं करने की संभावना नहीं है; केवल एक या दो मामूली बदलाव हैं। 3.8 को भी काम करना चाहिए।
इसी तरह की एक और विधि है setup.py
। इनका उपयोग आमतौर पर पुस्तकालयों को वितरित करने के लिए किया जाता है - जैसे PyInstaller (एक अन्य समाधान जिसका मैं नीचे उल्लेख करूँगा), या सुन्न, या wxPython, या PyQt5 आदि - आयात / कमांड लाइन उपयोग के लिए। अजगर पैकेजिंग गाइड काफी उपयोगी है, और वहाँ ट्यूटोरियल के भार हैं। (Google python setup.py tutorial
) आप इन फ़ाइलों में आवश्यकताओं को भी निर्दिष्ट कर सकते हैं।
2. एक कंटेनर
डोकर बड़ा है। यदि आपने इसके बारे में नहीं सुना है, तो मुझे आश्चर्य होगा। एक सारांश के एक त्वरित गूगल के साथ आता है यह , जो मैं का हिस्सा उद्धृत करता हूँ:
तो हर कोई कंटेनर और डॉकरों से प्यार क्यों करता है? जेम्स बॉटले, पूर्व में सर्वर वर्चुअलाइजेशन के सीटीओ और एक प्रमुख लिनक्स कर्नेल डेवलपर, हाइपर-वी, केवीएम और एक्सएम जैसे वीएम हाइपरविजर को समझाते थे, सभी "वर्चुअल हार्डवेयर के अनुकरण पर आधारित हैं। इसका मतलब है कि वे वसा के संदर्भ में मोटे हैं।" सिस्टम आवश्यकताएं।"
कंटेनर, हालांकि, साझा ऑपरेटिंग सिस्टम का उपयोग करते हैं। इसका मतलब यह है कि वे सिस्टम संसाधन की दृष्टि से हाइपरविजर की तुलना में अधिक कुशल हैं। हार्डवेयर के वर्चुअलाइजेशन के बजाय, कंटेनर एक ही लिनक्स उदाहरण के शीर्ष पर आराम करते हैं। इसका मतलब है कि आप "बेकार 99.9 प्रतिशत वीएम जंक को पीछे छोड़ सकते हैं, जो आपको अपने आवेदन में एक छोटे, साफ कैप्सूल के साथ छोड़ देगा।"
इसे आपके लिए संक्षेप में प्रस्तुत करना चाहिए। (ध्यान दें कि आपको कंटेनरों के लिए विशिष्ट OS की आवश्यकता नहीं है।)
3. एक निष्पादन योग्य फ़ाइल
2 मुख्य उपकरण हैं जो लेखन के समय ऐसा करते हैं। PyInstaller, और cx_Freeze। दोनों सक्रिय रूप से विकसित हैं। दोनों ओपन सोर्स हैं।
आप अपनी स्क्रिप्ट लेते हैं, और उपकरण इसे बाइटकोड के लिए संकलित करता है, आयात पाता है, उन को कॉपी करता है, और एक पोर्टेबल पायथन वातावरण बनाता है जो आपकी स्क्रिप्ट को अंतिम उपयोगकर्ता के बिना अजगर की आवश्यकता के बिना लक्ष्य प्रणाली पर चलाता है।
व्यक्तिगत रूप से, मैं PyInstaller पसंद करता हूं - मैं डेवलपर्स में से एक हूं। PyInstaller एक कमांड लाइन स्क्रिप्ट के माध्यम से अपनी सभी कार्यक्षमता प्रदान करता है, और अधिकांश पुस्तकालयों का समर्थन करता है जो आप सोच सकते हैं - और अधिक समर्थन करने के लिए विस्तार योग्य है। cx_Freeze को सेटअप स्क्रिप्ट की आवश्यकता होती है।
दोनों उपकरण विंडोज़, लिनक्स, मैकओएस और अधिक का समर्थन करते हैं। PyInstaller सिंगल फ़ाइल एक्ज़ेक या एक फ़ोल्डर बंडल बना सकता है, जबकि cx_Freeze केवल एक फ़ोल्डर बंडल का समर्थन करता है। PyInstaller 3.6 अजगर 2.7, और 3.5-3.7 का समर्थन करता है - लेकिन 4.0 अजगर 2 का समर्थन नहीं करेगा । cx_Freeze ने पिछले प्रमुख रिलीज (6.0 मुझे लगता है) के रूप में अजगर 2 समर्थन को गिरा दिया है।
वैसे भी, उपकरण सुविधाओं के बारे में पर्याप्त है; आप स्वयं उन पर गौर कर सकते हैं। ( अधिक जानकारी के लिए https://pyinstaller.org और https://cx-freeze.readthedocs.io देखें )
इस वितरण विधि का उपयोग करते समय, आप आमतौर पर GitHub रेपो पर स्रोत कोड प्रदान करते हैं, एक जोड़े को (प्रत्येक प्लेटफ़ॉर्म के लिए एक) डाउनलोड के लिए तैयार करते हैं, और कोड को एक निष्पादन योग्य फ़ाइल में कैसे बनाया जाए, इस पर निर्देश देते हैं।