पायथन प्रोजेक्ट से एकल निष्पादन योग्य बनाएं


87

मैं अपने पायथन प्रोजेक्ट से एक एकल निष्पादन योग्य बनाना चाहता हूं। एक उपयोगकर्ता को पायथन को स्थापित किए बिना इसे डाउनलोड करने और चलाने में सक्षम होना चाहिए। अगर मैं सिर्फ एक पैकेज वितरित कर रहा था, तो मैं इसे बनाने और वितरित करने के लिए पाइप, पहिया और PyPI का उपयोग कर सकता था, लेकिन इसके लिए उपयोगकर्ता के पास पायथन है और पैकेज स्थापित करना जानता है। पायथन परियोजना से स्व-निहित निष्पादन योग्य बनाने के लिए मैं क्या उपयोग कर सकता हूं?


मैं अभी भी 2.x (सटीक होने के लिए 2.7.2) में लिख रहा हूं, लेकिन 3.x (यदि मॉड्यूल और ऐसे संगत हैं) को स्थानांतरित करने की आवश्यकता हो सकती है और तब भी समाधान की आवश्यकता होगी।
शैडोफ्लैम

ध्यान दें कि पैकेजिंग समस्या निदान को बहुत जटिल करेगी। इतना ही नहीं आप (या pdb) फ़ाइलों को निष्पादित करने के लिए आसान पहुँच नहीं है, py2exe(दूसरों के बारे में पता नहीं) .pyफ़ाइलों को शामिल नहीं करता है ताकि आप स्टैक निशान में स्रोत लाइनों को नहीं देखेंगे।
ivan_pozdeev

रुचि के एक बिंदु के रूप में, मैंने
ShadowFlame

जवाबों:


114

यहाँ कुछ सामान्य हैं। जब तक स्पष्ट रूप से उल्लेख नहीं किया जाता है, नीचे सूचीबद्ध सभी परियोजनाओं को मेरे अंतिम संपादन (जनवरी 2020) के रूप में सक्रिय रूप से बनाए रखा जा रहा है।

यदि आपने स्वयं को कितनी बार अद्यतन किया है, तो मैं उनकी संबंधित वेबसाइटों, रेपो और PyPi सूचियों के लिंक भी शामिल करता हूँ।

इसके अलावा, जब तक अन्यथा उल्लेख नहीं किया जाता है, नीचे सूचीबद्ध सभी प्रोग्राम विशेष रूप से उस ऑपरेटिंग सिस्टम के लिए एक exe का उत्पादन करेंगे जो इसमें चल रहा है। इसलिए, उदाहरण के लिए, विंडोज में Pyinstaller चलाने से विंडोज exe का उत्पादन होगा, लेकिन लिनक्स में Pyinstaller चलाने से लिनक्स exe का उत्पादन होगा। यदि आप कई ऑपरेटिंग सिस्टम के लिए एक exe का उत्पादन करना चाहते हैं, तो आपको वर्चुअल मशीनों का उपयोग करना होगा या वाइन जैसी किसी चीज़ का उपयोग करना होगा ।


निम्नलिखित कार्यक्रम सभी समान रूप से काम करते हैं - वे पायथन और आपके कार्यक्रम को एक साथ जोड़ते हैं, प्रभावी रूप से उन्हें एक निष्पादन योग्य बनाने के लिए संयोजन करते हैं।

  • PyInstaller:

    • लिंक्स : वेबसाइट || रेपो || PyPi
    • समर्थन करता है : विंडोज, मैक और लिनक्स पर पायथन 2.7 और पायथन 3.4 - 3.7।
  • cx_Freeze:

    • लिंक्स: वेबसाइट || रेपो || PyPi
    • समर्थन करता है: विंडोज, मैक और लिनक्स पर पायथन 2.7 और 3.5 - 3.8।
  • py2app:

    • लिंक्स: वेबसाइट || रेपो || PyPi
    • समर्थन करता है: केवल मैक पर पायथन 2.7 और 3.3 (?) - 3.7 (?)।
    • नोट: मेरे अंतिम संपादन के अनुसार, मैं pypp द्वारा समर्थित पायथन संस्करणों की सटीक सीमा को निर्णायक रूप से निर्धारित करने में असमर्थ रहा हूं। नवीनतम रिलीज में पायथन 3.7 का समर्थन किया गया है।

नोट: इस पोस्ट के पूर्व संस्करणों में py2exe ( रेपो ) और बीबफ्रीज ( रेपो ) के लिए राइट-अप शामिल थे । दोनों परियोजनाओं को इस सूची से हटा दिया गया है: उन्होंने कई वर्षों से कोई गतिविधि नहीं देखी है और वे पूरी तरह से अस्वीकार्य प्रतीत होते हैं। पुराने राइटअप के लिए संपादित इतिहास देखें।


बेशक, यह काम करने का एकमात्र तरीका नहीं है:

  • pynsist:

    • लिंक्स: वेबसाइट || रेपो || PyPi
    • समर्थन करता है: सभी पायथन संस्करण? नोट - केवल विंडोज इंस्टालर बनाएंगे ।
    • अन्य नोट: Pynsist अपने आवेदन के साथ किसी भी मनमाने पायथन संस्करण को एक साथ बंडल करने का समर्थन करता है। हालाँकि, टूल को चलाने के लिए Python 3.5+ की आवश्यकता होती है।

      Pynsist आपके प्रोग्राम के लिए एक Windows इंस्टॉलर बनाएगा जो सीधे आपके कोड के साथ बंडल करने के बजाय उपयोगकर्ता के कंप्यूटर पर Python स्थापित करेगा और आपके पायथन स्क्रिप्ट से लिंक करने वाले शॉर्टकट बनाएगा। यद्यपि यह प्रोग्राम केवल विंडोज इंस्टालर का उत्पादन करता है, यह प्रतीत होता है कि आप अभी भी मैक और लिनक्स कंप्यूटर पर Pynsist चला सकते हैं।

  • Nuitka:

    • लिंक्स: वेबसाइट || रेपो (गितुब दर्पण) || PyPi
    • समर्थन करता है: विंडोज, मैक और लिनक्स पर पायथन 2.6 - 2.7 और पायथन 3.3 - 3.7।
    • अन्य नोट्स: नुत्का शाब्दिक रूप से आपके पायथन कोड को संकलित करेगा और आपके कोड को गति देने के लिए प्रयास करने के लिए और अन्य परियोजनाओं के विपरीत एक exe (जैसा कि अन्य परियोजनाओं, जिसमें केवल पायथन शामिल हैं) का उत्पादन करेगा। एक साइड इफेक्ट के रूप में, आपको एक आसान एक्सई भी मिलेगा जिसे आप वितरित कर सकते हैं। ध्यान दें कि आपको अपने सिस्टम पर C ++ कंपाइलर उपलब्ध होना चाहिए।
  • cython:

    • लिंक्स: वेबसाइट || रेपो || PyPi
    • समर्थन करता है: विंडोज, मैक और लिनक्स पर पायथन 2.6 - 2.7 और पायथन 3.2 - 3.8।
    • अन्य नोट: साइथन नूत्का के समान है जिसमें यह पायथन संकलक है। हालाँकि, अपने कोड को सीधे संकलित करने के बजाय, वह इसे C पर संकलित करेगा। आप फिर उस C कोड को ले सकते हैं और अपने कोड को exe में बदल सकते हैं । आपको अपने सिस्टम पर C कंपाइलर उपलब्ध करवाना होगा।

मेरी व्यक्तिगत प्राथमिकता PyInstaller का उपयोग करना है क्योंकि मेरे लिए उठना और दौड़ना सबसे आसान था, यह कई लोकप्रिय पुस्तकालयों जैसे कि सुन्न या pygame के साथ अच्छी तरह से काम करने के लिए डिज़ाइन किया गया था, और विभिन्न OSes और पायथन संस्करणों के साथ काफी अनुकूलता है।

हालाँकि, मैंने बहुत अधिक कठिनाई के बिना cx_Freeze का उपयोग करके सफलतापूर्वक विभिन्न एक्सईज़ का निर्माण किया है, इसलिए आपको उस प्रोग्राम को आज़माने पर भी विचार करना चाहिए।

मुझे अभी तक व्यापक रूप से स्त्री-रोग विशेषज्ञ, नुत्का या साइथन की कोशिश करने का मौका नहीं मिला है, लेकिन वे बहुत दिलचस्प और अभिनव समाधानों की तरह लगते हैं। यदि आप कार्यक्रमों के पहले समूह का उपयोग करके परेशानी में हैं, तो इन तीनों में से किसी एक को आज़माना सार्थक हो सकता है। चूंकि वे मौलिक रूप से अलग-अलग काम करते हैं तो Pyinstaller / cx_freeze-style प्रोग्राम, वे उन विषम धार मामलों में सफल हो सकते हैं जहां पहला समूह विफल रहता है।

विशेष रूप से, मुझे लगता है कि अपने कोड को पूरी तरह से वितरित करने के पूरे मुद्दे को दरकिनार करने का एक अच्छा तरीका है,: मैक और लिनक्स में पहले से ही पायथन के लिए मूल समर्थन है, और बस विंडोज पर पायथन स्थापित करना वास्तव में सबसे अच्छा समाधान हो सकता है। (नकारात्मक पक्ष यह है कि अब आपको पायथन + लाइब्रेरी स्थापित करने के कई संस्करणों को लक्षित करने के बारे में चिंता करने की आवश्यकता है)।

नुत्का और साइथन (मेरे सीमित अनुभव में) काफी अच्छा काम करते हैं। फिर से, मैंने उन्हें बड़े पैमाने पर खुद का परीक्षण नहीं किया है, और इसलिए मेरा मुख्य अवलोकन यह है कि वे एक exe का उत्पादन करने में अधिक समय लेते हैं, फिर "फ्रीज" शैली के कार्यक्रम करते हैं।


यह सब कहा जा रहा है, अपने पायथन कार्यक्रम को एक निष्पादन योग्य में परिवर्तित करना जरूरी नहीं कि आपके कोड को वितरित करने का एकमात्र तरीका है। अन्य विकल्प क्या उपलब्ध हैं, इसके बारे में अधिक जानने के लिए, निम्नलिखित लिंक देखें:


1
ध्यान दें कि आपको अपने बंडल को Microsoft C ++ Redistributables (उर्फ msvcrxx.dll, जहां xxएक संस्करण संख्या है, को .exe रन बनाने के लिए (या उपयोगकर्ताओं को इसे खुद से इंस्टॉल करने के लिए कहें) के अंदर शामिल करना होगा। यह आवश्यक है क्योंकि पायथन विंडोज पर विजुअल स्टूडियो का उपयोग करके बनाया गया है।
लोबस

ऐसा लगता है कि अजगर आईडीई (pycharm या pydev - ग्रहण प्लगिन) में से कोई भी अभी तक IDE में ही संकलन-से-एकल-निष्पादन योग्य कार्यक्षमता को शामिल करने के लिए नहीं है। क्या वो सही है? :-)
नेल्दा.टेकस्पिरस

यदि आप अपने स्रोत कोड को सुरक्षित रखने की परवाह करते हैं, तो शायद साइथन सबसे अच्छा विकल्प है क्योंकि यह सी कोड संकलित करता है। वे प्रोग्राम जो आमतौर पर फ्रीजिंग तकनीक का उपयोग करते हैं, आसानी से विघटित हो सकते हैं।
मार्टिन डी ला

PyInstaller को Python 3.7 के समर्थन के रूप में ऊपर सूचीबद्ध किया गया है। यह मेरे अनुभव के अनुसार और pyinstaller.org पर वर्णन के अनुसार सही नहीं है, जिसमें कहा गया है कि "PyInstaller Python 2.7 और 3.3-3.6 के साथ काम करता है"।
टॉम

1
@ टोम - थोड़ा और खुदाई करने के बाद, ऐसा लग रहा है कि जब पाइयस्टीयर खुद पायथन 3.7 का समर्थन करता है, तो उन्होंने आधिकारिक तौर पर 3.7 समर्थन के साथ एक नया संस्करण जारी नहीं किया है। (उदा। उनके गित्भ रेपो में कहा गया है कि वे पायथॉन 3.7 का समर्थन करते हैं + उन्हें 3.7 से संबंधित कोई खुला मुद्दा नहीं दिखाई देता है, लेकिन PyPi पर pyinstaller का नवीनतम संस्करण दिसंबर 2017 से है)। इसलिए यदि आपको 3.7 समर्थन की आवश्यकता है, तो आप सीधे स्रोत से pyinstaller बनाने या स्थापित करने की कोशिश कर सकते हैं, या अगली रिलीज तक प्रतीक्षा कर सकते हैं। (या किसी अन्य कार्यक्रम का उपयोग करें, निश्चित रूप से)
माइकल ० एक्स २ ए

10

pyinstaller अभी भी सक्रिय विकास के अधीन है। आप GitHub पर नवीनतम परिवर्तन देख सकते हैं ।

इसमें तीनों प्रमुख प्लेटफार्मों के लिए समर्थन है:

  • विंडोज (32-बिट और 64-बिट)
  • लिनक्स (32-बिट और 64-बिट)
  • मैक ओएस एक्स (32-बिट और 64-बिट)

और यह पाइथन संस्करणों 2.6 और 2.7 का समर्थन करता है। यह पायथन 3 का समर्थन नहीं करता है, लेकिन एक प्रयोगात्मक पायथन 3 शाखा है

अपडेट करें

संस्करण 3.2.1 के रूप में यह पायथन 2.7, 3.3-3.5 का समर्थन करता है


2

बेहतर उपयोग pip install auto-py-to-exeजो एक निष्पादन योग्य बनाने के लिए आवश्यक सभी विकल्पों के साथ एक सुंदर यूआई प्रदान करता है।

auto-py-to-exeअपने टर्मिनल या कमांड प्रॉम्प्ट में बस टाइप करने के बाद ।

ऑटो py करने वाली exe


अभी भी इस एक के रूप में पुराने पर एक धागा जवाब देने के लिए धन्यवाद। एक अद्भुत खोज लगती है, और सेट होने पर वास्तव में काम को सरल करता है, साथ ही साथ वास्तविक इस्तेमाल की गई कमांड प्रदान करता है: D
ShadowFlame
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.