2012-01-04 28 views
8

मैंने देखा है कि कई परिपक्व पायथन पुस्तकालयों में अधिकांश आर्किटेक्चर (Win32/Win-amd64/MacOS) और पायथन के संस्करणों के लिए प्रीकंपिल्ड संस्करण हैं। अलग-अलग वातावरण के लिए अपने एक्सटेंशन को पार करने का मानक तरीका क्या है? वाइन? आभाषी दुनिया? भीड़ सोर्सिंग?पाइथन के विभिन्न ओएस/संस्करणों के लिए आप पाइथन सी/सी ++ एक्सटेंशन कैसे संकलित करते हैं?

+2

आप इस बारे में कुछ सीमित जानकारी [आधिकारिक पायथन डॉक्स में] (http://docs.python.org/distutils/builtdist.html) पा सकते हैं। –

+0

धन्यवाद, लेकिन यह केवल आंशिक रूप से प्रश्न का उत्तर देता है। – golobor

+0

मुझे लगता है कि [क्रिस्टोफ गोहल्के] (http://www.lfd.uci.edu/~gohlke/) इस प्रश्न का उत्तर दे सकता है। मैंने उसका ध्यान लाया। –

उत्तर

0

एसडब्ल्यूआईजी मल्टीप्लार्टर कोड पीढ़ी के लिए एक मार्ग प्रदान करता है।

+0

क्षमा करें, मैं इसके बारे में स्पष्ट नहीं था। सवाल वास्तविक संकलन के बारे में है, कोड विकास नहीं। – golobor

0

मेरे सभी पायथन एक्सटेंशन मॉड्यूल सी ++ हैं, सी नहीं, इसलिए मैं बूस्ट पायथन का उपयोग करता हूं। जब मैं विभिन्न ऑपरेटिंग सिस्टम का समर्थन करने की आवश्यकता होती हूं तो मैं आभासी मशीनों का भी उपयोग करता हूं। बूस्ट का बीजेएम बिल्ड ड्राइवर आपको पाइथन (2.6, 2.7) के विभिन्न संस्करणों के साथ जी ++ और विभिन्न अन्य चीजों के विभिन्न संस्करणों के साथ निर्माण करने की अनुमति देता है। अगर मेरे पास एक एक्सटेंशन मॉड्यूल था जो बहुत लोकप्रिय था और बहुत से लोग प्लेटफ़ॉर्म पर इसका उपयोग करना चाहते थे, तो मेरे पास यह सुनिश्चित होगा कि मेरा कोड बहुत पोर्टेबल था (यह वैसे भी होना चाहिए) और मैं इसे कैसे बना सकता हूं इसके निर्देश प्रदान करता हूं विभिन्न पायथन संस्करणों के लिए कई अलग-अलग उदाहरणों का उपयोग करके bjam के साथ, यह उन्हें शुरू करने के लिए पर्याप्त होगा। यदि यह काम करता है, तो आप उन्हें अपने निर्माण का योगदान करने के लिए कह सकते हैं ताकि अन्य लोग इसका उपयोग कर सकें (निश्चित रूप से आपके द्वारा असमर्थित)।

7

हम वर्चुअल मशीनों और Hudson सर्वर का उपयोग करते हैं।

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

हम फिर बिल्ड मैट्रिक्स सेट करने के लिए हडसन में एक बहु-कॉन्फ़िगरेशन प्रोजेक्ट का उपयोग करते हैं। बिल्ड मैट्रिक्स हमें कई आर्किटेक्चर पर एकाधिक पाइथन संस्करणों को बनाने के लिए (एक क्लिक के साथ) की अनुमति देता है, लेकिन सिद्धांत में आप अपने मैट्रिक्स में सेट कर सकते हैं और हर संयोजन का निर्माण कर सकते हैं। बेशक आप इसके बजाय जेनकिन्स का उपयोग कर सकते हैं।

+0

अनुमान लगाएं कि वीएम मार्ग "अर्द्ध" अवैध हो सकता है यदि आपके लक्ष्य में से एक ओएसएक्स है :) फिर भी ऐसा लगता है कि वीएम रास्ता शायद जाने का सबसे अच्छा तरीका है। – ashwoods

+0

ओएसएक्स ने थोड़ी देर के लिए वर्चुअलाइजेशन की अनुमति दी है: http://www.macworld.com/article/1163755/vmware_fusion_update_lets_users_virtualize_leopard_snow_leopard.html – hbar

+0

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