2010-04-22 11 views
25

में मैं पहली बार अजगर का उपयोग कर क्यूटी के साथ एक सी ++ आवेदन लिखने के लिए है, लेकिन निर्माण एक प्रोटोटाइप और फिर धीरे धीरे सी के साथ अजगर कोड के स्थान पर ++ चाहते हैं।प्रोटोटाइप क्यूटी/C++ पायथन

यह सही दृष्टिकोण है, और क्या उपकरण (बाइंडिंग, बाध्यकारी जनरेटर, आईडीई) उपयोग करना चाहिए?
आदर्श रूप से, सब कुछ उबंटू रिपॉजिटरीज़ में उपलब्ध होना चाहिए, इसलिए मुझे असंगत या पुराने संस्करणों के बारे में चिंता करने की ज़रूरत नहीं है और सबकुछ सरल aptitude install के साथ स्थापित होना चाहिए।
क्या इस प्रक्रिया के बारे में कोई व्यापक दस्तावेज है या क्या मुझे हर एक घटक सीखना है, और यदि हां, तो कौन सा? अच्छा स्वत: पूर्ण और क्यूटी एकीकरण की वजह से क्यूटी निर्माता,:

अभी मैं बनाने के लिए कई विकल्प हैं।
ग्रहण, क्योंकि यह सी ++ और पायथन दोनों के लिए समर्थन प्रदान करता है। एरिक (अभी तक इसका इस्तेमाल किया नहीं) विम

PySide के रूप में यह CMake और Boost.Python साथ काम कर रहा है, तो सैद्धांतिक रूप से यह होगा अजगर कोड आसान जगह बनाते हैं। पीईक्यूटी क्योंकि यह अधिक व्यापक रूप से उपयोग किया जाता है (अधिक समर्थन) और डेबियन पैकेज के रूप में उपलब्ध है।

संपादित: मैं विभिन्न कंप्यूटरों के लिए कार्यक्रम को तैनात करना होगा के रूप में, सी ++ - समाधान (अगर मैं इसे स्थिर जोड़ने हूँ कार्यक्रम और कुछ पुस्तकालय फ़ाइलें) 1-5 फ़ाइलों की आवश्यकता होगी, पायथन मैं का उपयोग कर ' डी को प्रत्येक प्लेटफॉर्म पर पीईक्यूटी/पायसाइड/एसआईपी/जो कुछ भी बनाना है और समझाना है कि पाइथन और बाकी सब कुछ कैसे स्थापित करें।

उत्तर

35

मैं क्यूटी के साथ एक सी ++ आवेदन लिखने के लिए, लेकिन एक प्रोटोटाइप पहले अजगर का उपयोग कर निर्माण और फिर धीरे धीरे सी के साथ अजगर कोड के स्थान पर ++ चाहते हैं। क्या यह सही दृष्टिकोण है?

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

क्या इस प्रक्रिया के बारे में कोई व्यापक दस्तावेज है या क्या मुझे हर घटक सीखना है, और यदि हां, तो कौन से हैं?

संपादक/आईडीई: किसी भी संपादक/आईडीई आप आरामदायक महसूस का उपयोग करें, लेकिन मैं अत्यधिक एक पुनर्रचना का समर्थन करता है कि सलाह देते हैं

यहाँ मैं विभिन्न टुकड़े के लिए सलाह देते हैं है। यदि आप ग्रहण के साथ सहज हैं, तो इसका इस्तेमाल करें। यदि आप मुख्य रूप से सी ++ मार्ग पर जाना चाहते हैं और आप किसी भी संपादक से बहुत परिचित नहीं हैं, तो आप QtCreator के साथ बेहतर हो सकते हैं। Eric रीफैक्टरिंग के लिए समर्थन के साथ एक बहुत अच्छा पायथन आईडीई है, जब तक कि आप बहुत सारे C++ नहीं कर रहे हैं, इसे देखें। इससे भी बेहतर, इसका स्रोत कोड अच्छा पीईक्यूटी उपयोग और प्रथाओं का एक उदाहरण है।

प्रक्रिया:

त्वरित सारांश:

  1. , जब हॉटस्पॉट के रूप में पहचान PyQt
  2. का उपयोग कर पायथन में अपने आवेदन लिखें सी ++
  3. को decoupled अजगर कक्षाएं कन्वर्ट करने वालों के लिए बाइंडिंग बनाएं SIP
  4. का उपयोग कर कक्षाएं नए परिभाषित पुस्तकालय आयात करें

    PyQt का उपयोग कर पायथन में आवेदन लिखें: उनके अजगर समकक्षों के स्थान पर पायथन में मेष राशि

  5. गति को बढ़ावा देने

सामान्य विवरण का आनंद लें। एक अच्छा 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 का उपयोग नहीं किया है, इसलिए मुझे यकीन नहीं है कि यह पीईक्यूटी की तुलना में कैसा है। साथ ही, उनकी वेबसाइट पर निम्नलिखित चेतावनी नोट करें:

पायसाइड प्रगति पर एक काम है और अभी तक उत्पादन के स्तर के लिए अनुकूल नहीं है जो उत्पादन-स्तरीय स्थिरता की आवश्यकता है।

लेकिन, एक अच्छी टिप्पणी पर, कम से कम प्रारंभिक रिलीज के लिए "पीईक्यूटी के साथ एपीआई संगतता बनाए रखने" का इरादा है। तो, सी ++ बाइंडिंग से अलग, आप आसानी से दोनों के बीच स्विच कर सकते हैं।

+0

अच्छा जवाब! ओपी के संपादन के जवाब में आप py2exe/freeze.py पर एक सेक्शन पर विचार कर सकते हैं, भले ही उन्होंने स्पष्ट रूप से प्रश्न नहीं पूछा। – tgray

+0

@tgray - संपादन पर सिर के लिए धन्यवाद। मैंने एक परिनियोजन अनुभाग जोड़ा है। –

+2

शायद 'पीसाइड उत्पादन-स्तर' भाग के लिए उपयुक्त नहीं है क्योंकि यह थोड़ी देर के लिए रहा है। – vikki

3

यदि आप सिर्फ क्यूटी सीख रहे हैं और पाइथन आपको प्रोटोटाइप की गति का लाभ उठाना चाहते हैं, तो मैं आपको PyQt का उपयोग करके नमूना प्रोजेक्ट बनाने की सलाह दूंगा। जैसा कि आपने कहा था, एक डेबियन पैकेज है, इसलिए आप अपना पहला एप्लिकेशन बनाने से बस एक साधारण apt-get दूर हैं।

मैं व्यक्तिगत रूप से gVim का उपयोग अपने पायथन/क्यूटी संपादक के रूप में करता हूं, लेकिन आप बिना किसी परेशानी के किसी भी पायथन-अनुकूल संपादक का उपयोग कर सकते हैं। मुझे WingIDE पसंद आया और उन्होंने क्यूटी के लिए स्वत: पूर्ण किया है लेकिन एक बार जब आप विम कुल-सहायता से चिपकते हैं तो स्विच करना मुश्किल होता है।

मैं कहूँगा कि PySidePyQt साथ 95% + संगत है और LPGL लाइसेंस अच्छा है, लेकिन अगर आप बस अपना पहला क्यूटी अनुप्रयोग प्रोटोटाइप करने के लिए कोशिश कर रहे हैं, तो मुझे नहीं लगता कि PySide उपयोग करने के लिए कोई वास्तविक कारण है । हालांकि, मैं PySide डॉक्स की तरह बेहतर कर, आप भी सिर्फ उन्हें इस्तेमाल करते हैं और PyQt के साथ सभी पुस्तकालय संदर्भ बदल सकते हैं।

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

1

मैं कोड प्रोटोटाइप करने के लिए शुरू करने से पहले यूआई मॉक-अप ड्रा करेंगी। यहाँ कुछ लाभ हैं:

  • प्रोटोटाइप कोडिंग के रूप में वहाँ कोई प्रोग्रामिंग शामिल

  • जल्दी जैसे तालिकाओं और पेड़ों के रूप में विगेट्स, भरने है, डेटा के साथ

  • के विवरण और नोट्स जोड़ें की तुलना में तेज अपने स्क्रीन

  • आसानी से स्क्रीन पर कब्जा किए बिना विनिर्देश दस्तावेजों में नकली एकीकृत करें

  • मान्य यूआई डिजाइन अवधारणाओं को लागू करने से पहले

वहाँ उपकरण मदद कर सकते हैं आपको लगता है कि, लेकिन आप क्यूटी उपयोग करने के लिए जा रहे हैं, MockupUI एक अच्छा विकल्प के रूप में यह साथ क्यूटी विजेट renders हो सकता है कर के एक बहुत हैं विंडोज 7,8 या 10 के लिए मूल शैलियों जो आपके मॉकअप को अधिक यथार्थवादी दिखती है।

संबंधित मुद्दे