2015-06-11 8 views
6

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

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

दरअसल मेरी समस्या यह है कि, मैं पाइथन जीयूआई अनुप्रयोग विकसित करने के लिए पाइसाइड लाइब्रेरी (एलजीपीएल v2.1 के साथ) का उपयोग कर रहा हूं। लाइब्रेरी का कहना है कि मुझे पुस्तकालय से उनके कानूनी शर्तों (क्यूटी के समान) का पालन करने के लिए गतिशील रूप से लिंक करना चाहिए। इस मामले में, मैं गतिशील रूप से PySide से कैसे लिंक करूं?

+0

मुझे लगता है कि आप सामान्य रूप से पाइसाइड का उपयोग गतिशील लिंकिंग के रूप में करते हैं, भले ही यह एक ही डाउनलोड का हिस्सा हो। यदि आप एक एकल फ़ाइल exe (जो cx_Freeze वैसे भी नहीं करता है) बनाते हैं, तो कुछ लोग उस स्थिर लिंकिंग को कॉल कर सकते हैं, लेकिन मुझे लगता है कि अभी भी सबसे अधिक नहीं होगा। आगे बढ़ें और इसका इस्तेमाल करें - लोगों के लिए पाइथन अनुप्रयोगों का निर्माण करना है, इसलिए यदि आप यही कर रहे हैं, तो आप शायद ठीक हैं। –

+0

धन्यवाद थॉमस। आपका मतलब है, भले ही मैं एक फ़ाइल exe (pyinstaller या कुछ भी उपयोग कर) का निर्माण करता हूं, फिर भी यह गतिशील लिंकिंग है? यदि मैं पाइसाइड स्रोतों को डाउनलोड करने के निर्देशों के लिए एक सरल रीडेमे फ़ाइल के साथ जारी रख सकता हूं। क्या यह? – Kaje

+0

मुझे लगता है कि ज्यादातर लोग कहेंगे कि अभी भी गतिशील लिंकिंग है, और आप जो प्रस्तावित करते हैं वह ठीक होना चाहिए। यदि आप चिंतित हैं, तो [PySide मेलिंग सूची] (http://lists.qt-project.org/mailman/listinfo/pyside) से इसके बारे में पूछें - यह उनकी व्याख्या है कि यह महत्वपूर्ण है। लेकिन अगर वे सोचा कि पर्याप्त पर्याप्त नहीं था तो मैं बहुत आश्चर्यचकित हूं। –

उत्तर

0

पायथन में कोई स्थिर लिंकिंग नहीं है। सभी आयातों को हमारी लक्षित मशीन पर सही निर्भरताओं को स्थापित करने की आवश्यकता होती है। इस तरह के पुस्तकालयों के संस्करण की पसंद हमारे निर्णय में हैं।

अब आइए पाइथन के लिए बाइनरी बिल्डर्स के पास आएं। इस मामले में, हमें जीएनयू परिभाषाओं के आधार पर लिंकिंग प्रकार निर्धारित करना होगा। यदि उपयोगकर्ता निर्भरता को प्रतिस्थापित कर सकता है, तो वह गतिशील है। यदि निर्भरता बाइनरी के साथ एक साथ जुड़ी हुई है, तो यह स्थिर लिंकिंग है। Cx_freeze या pyinstaller के मामले में, यदि हम इसे एक फ़ाइल के रूप में बनाते हैं, तो यह स्थिर लिंकिंग है। यदि हम इसे सामान्य मोड में बनाते हैं जहां सभी निर्भरताओं को अलग-अलग फ़ाइलों के रूप में एकत्र किया जाता है, तो यह गतिशील लिंकिंग होता है। आइडिया है, चाहे हम लक्ष्य मशीन में निर्भरता को प्रतिस्थापित कर सकते हैं या नहीं।

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