2009-02-15 11 views
16

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

क्या मेरे आवेदन के साथ पाइथन दुभाषिया + मानक लाइब्रेरी को तैनात करना संभव है? क्या लुआ, जावास्क्रिप्ट (स्पाइडरमॉन्की), रूबी इत्यादि जैसी कुछ अन्य भाषा इस उपयोग के लिए बेहतर होंगी?

मानदंड काम मैं के खिलाफ अलग-अलग भाषाओं वजन हूँ: बाहर से इंस्टॉल किए गए पैकेज

  • अच्छा सुविधा के साथ मानक पुस्तकालय
  • नाइस भाषा सेट पर

    • कोई/कुछ निर्भरता :)
    • Doesn परिणामस्वरूप एक विशाल इंस्टॉल पैकेज

    संपादित करें:

    मुझे लगता है कि सवाल किया जाना चाहिए: मैं अपने कार्यक्रम के संस्थापक के साथ अपने खुद के अजगर पुस्तकालय + मानक पुस्तकालय की तैनाती है, इतना है कि यह मंच पहले से ही अजगर स्थापित किया है या नहीं कोई फर्क नहीं पड़ता?

    संपादन 2:

    एक और स्पष्टीकरण। मुझे सी और पायथन कोड को जोड़ने के विनिर्देशों के बारे में जानकारी की आवश्यकता नहीं है।

  • उत्तर

    16

    अपने आवेदन को पाइथन लाइब्रेरी (विंडोज़ पर pythonXX.lib) से लिंक करें और अपने मुख्य() फ़ंक्शन में निम्न जोड़ें।

    Py_NoSiteFlag = 1; // Disable importing site.py 
    Py_Initialize(); // Create a python interpreter 
    

    आप एक ज़िप फ़ाइल (pythonXX.zip कहा जाता है) में जरूरत अजगर मानक पुस्तकालय बिट्स रखो और निष्पादन आप वितरित बगल में स्थित इस और pythonXX.dll जगह। Zipfile मॉड्यूल में PyZipFile पर एक नज़र डालें।

    +2

    यह भी ध्यान दिया जाना चाहिए कि एक ज़िप फ़ाइल में पायथन फ़ाइलों को रखने से प्रदर्शन प्रभाव भी पड़ते हैं। आपको एक छोटा इंस्टॉल आकार मिलता है, लेकिन स्टार्टअप समय में वृद्धि हुई है। ऐसा इसलिए है क्योंकि इसे हर बार शुरू होने पर फ़ाइलों को अनजिप और संकलित करना पड़ता है (यह एक पीईसी फाइल को सहेज नहीं पाएगा)। –

    +0

    क्या सिर्फ .pyc फ़ाइलों को वितरित करना संभव है? क्या होगा यदि हमारे पास ऐसी जगहों पर पीई फाइलें (ज़िप्ड नहीं) हैं जो उपयोगकर्ता ने केवल पढ़ने के लिए उपयोग किया है? –

    +3

    दरअसल, यदि आप zipfile का उपयोग करके संग्रह बनाते हैं। PyZipFile यह केवल .pyc फ़ाइलों को संग्रहित करेगा। आप हाथ से संग्रह भी बना सकते हैं। स्टार्टअप समय कम हो गया है क्योंकि ज़िप हेडर में मौजूद सभी मॉड्यूल की सूची और उनके बाइनरी ऑफसेट की एक सूची है। –

    8

    एम्बेडिंग प्रक्रिया पूरी तरह से प्रलेखित है: Embedding Python in Another Application। दस्तावेजों में कुछ स्तरों है, जिस पर एम्बेड किया जाता है, जो कुछ भी चुन सबसे अच्छा अपनी आवश्यकताओं फिट बैठता है पता चलता है।

    पाइथन एम्बेड करने का एक सरल डेमो निर्देशिका वितरण में डेमो/एम्बेड/निर्देशिका में पाया जा सकता है।

    The demo is here, डिस्ट्रो से निर्माण करने में सक्षम होना चाहिए।

    • बहुत ही उच्च स्तर को एम्बेड
    • परे बहुत ही उच्च स्तर एम्बेडिंग: एक अवलोकन
    • शुद्ध एम्बेड
    • विस्तार अजगर एंबेडेड
    • सी में एम्बेडिंग अजगर ++

    से मानक पुस्तकालय आप COMP का चयन कर सकते हैं उन परवाहियों जो बहुत अधिक निर्भरता नहीं लेते हैं।

    +0

    डेमो स्रोत के लिए जोड़ा गया लिंक। – gimel

    +0

    मुझे लगता है कि सवाल अस्पष्ट था। मैंने इसे थोड़ा संपादित किया। शायद यह अब और अधिक सटीक है। –

    0

    आप एक तरह से बस एक अजगर एप्लिकेशन को तैनात करने के लिए देख रहे हैं, तो आप Py2Exe इस्तेमाल कर सकते हैं। यह आपके ऐप को उन सभी निर्भरताओं की अनुमति देगा जो बिना किसी चिंता के किए हैं कि उपयोगकर्ता मशीन पर पहले से इंस्टॉल नहीं है या नहीं।

    [संपादित करें] तो Py2Exe है नो-जाना अंतर्निहित अनुप्रयोग के लिए, तो आप बस/प्रासंगिक फ़ाइलें और डाउनलोड के लिए जाँच कुछ भी है जिसकी कमी है स्थापित करने के लिए अपने संस्थापक मिल सकता है? [/ संपादित करें]

    [EDIT2] सका Elmer क्या आप खोज रहे हैं? [/ संपादित 2]

    +0

    क्या वह पाइथन एम्बेडेड के साथ सी ++ ऐप के साथ काम करता है? –

    +0

    मुझे यकीन नहीं है (मैंने कभी इसे स्वयं नहीं किया है)। Py2exe सिर्फ एक पाइथन ऐप को बदलता है जिसमें किसी भी निष्पादन योग्यता को एक निष्पादन योग्य में शामिल किया जाता है। –

    5

    गिमल द्वारा उत्तर का विस्तार करने के लिए, आपको python.dll शिपिंग से रोकने के लिए कुछ भी नहीं है, और इसका उपयोग पाइथन मानक लाइब्रेरी की अपनी स्थापना का उपयोग करने के लिए सही पायथनपैथ सेट करना है। वे सिर्फ पुस्तकालय और फाइलें हैं, और आपकी इंस्टॉल प्रक्रिया सिर्फ उनसे निपट सकती है।

    +0

    विषय के उत्तर के लिए धन्यवाद। :) –

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