मैं एक सॉफ्टवेयर प्लग-इन लिखने की कोशिश कर रहा हूं जो पायथन को एम्बेड करता है। विंडोज़ पर प्लग-इन तकनीकी रूप से एक डीएलएल है (यह प्रासंगिक हो सकता है)। Python Windows FAQ कहते हैं: अपने exe फ़ाइल मेंविंडोज़ पर पायथन एम्बेड करना: इसे डीएलएल क्यों होना चाहिए?
1.Do नहीं निर्माण अजगर सीधे। विंडोज़ पर, पाइथन को मॉड्यूल आयात करने के लिए एक डीएलएल होना चाहिए जो स्वयं डीएलएल हैं। (यह पहला कुंजी अनियंत्रित तथ्य है।) इसके बजाय, pythonNN.dll से लिंक करें; यह आमतौर पर सी: \ विंडोज \ सिस्टम में स्थापित है। एनएन पायथन संस्करण है, जो कि पायथन 2.3 के लिए "23" जैसी संख्या है।
मेरा सवाल यह है कि वास्तव में पाइथन एक डीएलएल क्यों होना चाहिए? यदि, मेरे मामले में, होस्ट एप्लिकेशन एक .exe नहीं है, लेकिन एक डीएलएल भी है, तो क्या मैं इसमें पायथन बना सकता हूं? या, शायद, इस नोट का मतलब है कि तृतीय पक्ष सी एक्सटेंशन pythonN.N.dll
पर मौजूद होने पर निर्भर हैं और अन्य डीएलएल नहीं करेंगे? मान लीजिए कि मैं वास्तव में एक एकल डीएलएल चाहता हूं, मुझे क्या करना चाहिए?
मुझे लगता है कि dynload_win.c
फ़ाइल है, जो विंडोज़ पर सी एक्सटेंशन आयात करने के लिए मॉड्यूल प्रतीत होता है और जहां तक मैं देख सकता हूं, यह विस्तार फ़ाइल को स्कैन करता है कि यह pythonX.X.dll
आयात करता है; लेकिन मुझे विंडोज़ के साथ अनुभव नहीं हुआ है और मैं वहां सभी कोड को समझ नहीं पा रहा हूं।
क्या होगा यदि मैं मानक पुस्तकालय एक्सटेंशन अपने आप संकलन और उन्हें अपने DLL (जो मेरी 'foo' और' bar' और सभी वस्तुओं है कि सामान्य रूप से 'pythonNN.dll' में जाने का किया जाएगा के खिलाफ लिंक के रूप में मैं में देखते हैं' पायथनकोर परियोजना ')? मेरे मामले में मानक लाइब्रेरी या तृतीय-पक्ष एक्सटेंशन के विशेष संस्करण होना ठीक है। –
फिर भी आपको बाकी सभी मानक लाइब्रेरी (सभी .py फाइलें, और .pyc और .pyo आमतौर पर भी चाहिए)। वे पाइथन-संस्करण विशिष्ट भी हैं। आप उन्हें ज़िप कर सकते हैं, लेकिन आप उन्हें रखने से नहीं बच सकते हैं। –
तो मूल रूप से, आपके आवेदन में पाइथन डीएलएल के बिना बंडल किए बिना कोई तरीका नहीं है? – viraj