मैं क्यूटी के साथ एक सी ++ आवेदन लिखने के लिए, लेकिन एक प्रोटोटाइप पहले अजगर का उपयोग कर निर्माण और फिर धीरे धीरे सी के साथ अजगर कोड के स्थान पर ++ चाहते हैं। क्या यह सही दृष्टिकोण है?
कि अपने लक्ष्य पर निर्भर करता है। दोनों करने के बाद, मैं आपको सलाह देता हूं कि आप जहां भी संभव हो और उचित हो पाइथन के साथ रहें। हालांकि इसमें कुछ अनुशासन होता है, लेकिन पायथन में बहुत बड़े अनुप्रयोग लिखना बहुत संभव है। लेकिन, जैसा कि आपको हॉटस्पॉट और चीजें मिलती हैं जिन्हें सी ++ में बेहतर तरीके से संभाला जा सकता है, आप निश्चित रूप से प्रासंगिक भागों को सी ++ पर पोर्ट कर सकते हैं।
क्या इस प्रक्रिया के बारे में कोई व्यापक दस्तावेज है या क्या मुझे हर घटक सीखना है, और यदि हां, तो कौन से हैं?
संपादक/आईडीई: किसी भी संपादक/आईडीई आप आरामदायक महसूस का उपयोग करें, लेकिन मैं अत्यधिक एक पुनर्रचना का समर्थन करता है कि सलाह देते हैं
यहाँ मैं विभिन्न टुकड़े के लिए सलाह देते हैं है। यदि आप ग्रहण के साथ सहज हैं, तो इसका इस्तेमाल करें। यदि आप मुख्य रूप से सी ++ मार्ग पर जाना चाहते हैं और आप किसी भी संपादक से बहुत परिचित नहीं हैं, तो आप QtCreator के साथ बेहतर हो सकते हैं। Eric रीफैक्टरिंग के लिए समर्थन के साथ एक बहुत अच्छा पायथन आईडीई है, जब तक कि आप बहुत सारे C++ नहीं कर रहे हैं, इसे देखें। इससे भी बेहतर, इसका स्रोत कोड अच्छा पीईक्यूटी उपयोग और प्रथाओं का एक उदाहरण है।
प्रक्रिया:
त्वरित सारांश:
- , जब हॉटस्पॉट के रूप में पहचान PyQt
- का उपयोग कर पायथन में अपने आवेदन लिखें सी ++
- को decoupled अजगर कक्षाएं कन्वर्ट करने वालों के लिए बाइंडिंग बनाएं SIP
- का उपयोग कर कक्षाएं नए परिभाषित पुस्तकालय आयात करें
PyQt का उपयोग कर पायथन में आवेदन लिखें: उनके अजगर समकक्षों के स्थान पर पायथन में मेष राशि
- गति को बढ़ावा देने
सामान्य विवरण का आनंद लें। एक अच्छा separation of concerns रखने के लिए सावधान रहें ताकि जब आपको सी ++ में टुकड़े बंद करने की आवश्यकता हो तो वे अपनी निर्भरताओं से अलग होंगे। जब आपको अंततः सी ++ में कुछ पोर्ट करने की आवश्यकता होती है, तो उसे सी ++/क्यूटी में लिखें और उसके बाद SIP का उपयोग करके इसके लिए बाइंडिंग बनाएं। प्रक्रिया में एसआईपी के पास good reference manual है, और आपके पास पीईक्यूटी के उदाहरण के रूप में सभी हैं।
तैनाती:
सी ++ - कई अनुप्रयोगों के लिए निर्भरता पर्याप्त सरल है कि यह भी मुश्किल एक इंस्टॉलर NullSoft's Installer या InnoSetup की तरह एक उपकरण का उपयोग कर बनाने के लिए नहीं है कर रहे हैं।
पायथन/पीईक्यूटी - पाइथन पर निर्भरता और क्यूटी पुस्तकालयों की उपस्थिति पर इसकी निर्भरता के कारण पीईक्यूटी अनुप्रयोगों को स्थापित करना थोड़ा मुश्किल है। एक व्यक्ति ने this post at ARSTechnica पर अपने प्रयासों को दस्तावेज किया। py2exe विंडोज पर बहुत अच्छी तरह से काम करता है और ठीक काम करना चाहिए। आईएमई, freeze.py, जो पाइथन स्रोत के साथ आता है, कभी-कभी यह निर्धारित करने में समस्याएं होती हैं कि कौन से साझा पुस्तकालय वास्तव में आवश्यक हैं और कभी-कभी एक बाइनरी बनाने की समाप्ति करेंगे जिनकी निर्भरता मौजूद नहीं है। Py2app can be made to work on Mac OS X।
लेकिन खराब, हालांकि, पीईक्यूटी/क्यूटी लाइसेंसिंग है। यदि आप एक वाणिज्यिक अनुप्रयोग विकसित कर रहे हैं, तो आपको एक वाणिज्यिक पीईक्यूटी (और क्यूटी) लाइसेंस होना चाहिए और उपयोगकर्ताओं को स्रोत को आसानी से संशोधित करने या अन्यथा पीईक्यूटी/क्यूटी एपीआई because of licensing restrictions के खिलाफ कोड लिखने से रोकने की ज़रूरत है। इसके कारण, पीईक्यूटी लेखक ने VendorId नामक एक उपकरण बनाया (हालांकि इसमें पाइथन लाइसेंस है)। VendorId के भीतर SIB नामक एक उपकरण है जिसका उपयोग निष्पादन योग्य बनाने के लिए किया जा सकता है जो केवल पायथन दुभाषिया पर निर्भर करता है। लेकिन, यदि आप इसे दूर जाने जा रहे हैं, तो आप अपने आवेदन के साथ एक कस्टम पायथन स्थापित करना चाहेंगे।
डिस्क्लेमर: मैंने PySide का उपयोग नहीं किया है, इसलिए मुझे यकीन नहीं है कि यह पीईक्यूटी की तुलना में कैसा है। साथ ही, उनकी वेबसाइट पर निम्नलिखित चेतावनी नोट करें:
पायसाइड प्रगति पर एक काम है और अभी तक उत्पादन के स्तर के लिए अनुकूल नहीं है जो उत्पादन-स्तरीय स्थिरता की आवश्यकता है।
लेकिन, एक अच्छी टिप्पणी पर, कम से कम प्रारंभिक रिलीज के लिए "पीईक्यूटी के साथ एपीआई संगतता बनाए रखने" का इरादा है। तो, सी ++ बाइंडिंग से अलग, आप आसानी से दोनों के बीच स्विच कर सकते हैं।
अच्छा जवाब! ओपी के संपादन के जवाब में आप py2exe/freeze.py पर एक सेक्शन पर विचार कर सकते हैं, भले ही उन्होंने स्पष्ट रूप से प्रश्न नहीं पूछा। – tgray
@tgray - संपादन पर सिर के लिए धन्यवाद। मैंने एक परिनियोजन अनुभाग जोड़ा है। –
शायद 'पीसाइड उत्पादन-स्तर' भाग के लिए उपयुक्त नहीं है क्योंकि यह थोड़ी देर के लिए रहा है। – vikki