2011-08-29 9 views
19

इस प्रश्न के विभिन्न पहलुओं पर कई पोस्ट लेकिन मैंने एक पोस्ट नहीं देखी है जो इसे सभी को एक साथ लाती है।पायथन परिनियोजन के लिए सर्वोत्तम अभ्यास - एकाधिक संस्करण, मानक इंस्टॉल स्थान, पैकेजिंग उपकरण इत्यादि

पहले एक व्यक्तिपरक बयान: ऐसा लगता है कि जब हम दुभाषिया के बाहर जाते हैं और तैनाती के मुद्दों से जूझना शुरू करते हैं तो पाइथन भाषा के साथ काम करते समय हमें सादगी मिलती है। एक ही मशीन पर पाइथन के कई संस्करणों के लिए सबसे अच्छा कैसे है? पैकेज कहां स्थापित किया जाना चाहिए? Disutils बनाम setuptools बनाम पीआईपी आदि ऐसा लगता है जैसे तैनाती की बात आती है जब पाइथन के जेन बहुत बुरी तरह दुर्व्यवहार किया जा रहा है। मैं विंडोज़ पर "डीएलएल नरक" अनुभव के घबराहट महसूस कर रहा हूँ।

क्या विशेषज्ञ इन सवालों पर कुछ हद तक सर्वोत्तम अभ्यास पर सहमत हैं?

आप एक ही मशीन पर अजगर के कई संस्करण चलाते हैं? आप कैसे विश्वास करते हैं कि वे सह-अस्तित्व में रह सकते हैं - और नया संस्करण अन्य प्रक्रियाओं की धारणा को तोड़ता नहीं है जो पहले संस्करण (उदाहरण के लिए ओएस विक्रेता द्वारा प्रदान की गई स्क्रिप्ट) पर भरोसा करते हैं? क्या यह सुरक्षित है? वर्चुअलenv पर्याप्त है?

स्थानीय फ़ाइल सिस्टम पर पायथन पर्यावरण (तृतीय पक्ष संकुल सहित) के विभिन्न घटकों के लिए स्थानों के लिए सबसे अच्छे विकल्प क्या हैं? क्या यूनिक्स और विंडोज ओएस के कई अलग-अलग संस्करणों के लिए स्थानों के बीच सख्त या मोटा पत्राचार है जिस पर भरोसा किया जा सकता है?

और दलदल का सबसे मजेदार कोने - आप किस इंस्टॉलेशन टूल का उपयोग करते हैं (setuptools, distutils, pip आदि) और क्या वे आपके विकल्पों के साथ अच्छी तरह से खेलते हैं: फ़ाइल स्थान, पायथन वर्चुअल वातावरण, पायथन पथ इत्यादि

ये ध्वनि कठिन प्रश्नों की तरह हैं। मुझे आशा है कि अनुभवी पायथनिस्टिस्ट ने इन चुनौतियों के लिए एक कैनोलिक दृष्टिकोण (या दो) परिभाषित किया हो सकता है। कोई भी दृष्टिकोण जो "एक साथ लटका" एक प्रणाली के रूप में उपयोग किया जा सकता है जिसे आत्मविश्वास (अलग, असंबद्ध उपकरण की तरह कम महसूस करना) बहुत उपयोगी होगा।

+1

मुझे लगता है कि यह प्रश्न अत्यधिक व्यापक रूप से परिभाषा है। – agf

+0

इस सवाल से पूछने के बाद, मैं 'वर्चुअलवेव्रैपर' का प्रशंसक बन गया हूं - यह उन कई मुद्दों को सरल बनाता है जिनके बारे में मैंने पूछा था। प्रत्येक संस्करण वितरण उपकरण के साथ अभी भी अजीब समस्याएं हैं, लेकिन एक दीवार से बंद पायथन पर्यावरण है जिसे जल्दी से बाहर और बाहर स्विच किया जा सकता है, बहुत मदद करता है। –

उत्तर

2

मैं मानता हूं कि यह एक व्यापक सवाल है, लेकिन मैं इसके कई हिस्सों को किसी भी तरह से संबोधित करने की कोशिश करूंगा।

अपने व्यक्तिपरक वक्तव्य के बारे में: मुझे नहीं पता कि पाइथन की सादगी और लालित्य का अर्थ यह होगा कि पैकेजिंग और तैनाती के मामलों को अचानक सरल चीजें बननी चाहिए। पैकेजिंग से संबंधित कुछ चीजें सरल हैं, अन्य नहीं हैं, अन्य हो सकती है। यह उपयोगकर्ताओं के लिए सबसे अच्छा होगा यदि हमारे पास एक पूर्ण, मजबूत और आसान पैकेजिंग प्रणाली थी, लेकिन यह उस तरह से नहीं बदला है। distutils बनाया गया था और उसके विकास को रोका गया, setuptools बनाया गया था और नए समाधान और नई समस्याओं को जोड़ा, सामाजिक समस्याओं की वजह से वितरणtools से वितरित किया गया था, और अंत में एक आधिकारिक पूर्ण पुस्तकालय बनाने के लिए distutils2 बनाया गया था।(Differences between distribute, distutils, setuptools and distutils2? पर अधिक) स्थिति डेवलपर्स और उपयोगकर्ताओं के लिए आदर्श से बहुत दूर है, लेकिन हम इसे बेहतर बनाने के लिए काम कर रहे हैं।

उसी मशीन पर पायथन के कई संस्करणों के लिए सबसे अच्छा कैसे है? यदि आप आधुनिक ओएस पर हैं, तो अपने पैकेज मैनेजर का उपयोग करें, या यदि आप यूनिक्स पर स्रोत से संकलित करते हैं, तो "alt altinstall" का उपयोग करें, या यदि आप Windows पर स्रोत से संकलित करते हैं तो समान गैर-विरोधी स्थापना योजना का उपयोग करें। डेबियन उपयोगकर्ता के रूप में, मुझे पता है कि मैं "pythonX.Y" का उपयोग करके अलग-अलग संस्करणों को कॉल कर सकता हूं, और डेबियन डेवलपर्स द्वारा डिफ़ॉल्ट संस्करण ("पायथन" और "पायथन 3") का निर्णय लिया जाता है। कुछ ओएस ने धारणा को तोड़ना शुरू कर दिया है कि python == python2, इसलिए पीईपी प्रगति में है या उसे निंदा करने के लिए प्रगति है: http://www.python.org/dev/peps/pep-0394/ विंडोज़ में एक पायथन संस्करण का डिफ़ॉल्ट रूप से उपयोग करने का कोई तरीका नहीं है, इसलिए एक और पीईपी है: http://www.python.org/dev/peps/pep-0397/

पैकेज कहां स्थापित किए जाने चाहिए? Distutils का उपयोग, मैं परियोजनाओं को अपने उपयोगकर्ता साइट-पैकेज निर्देशिका में स्थापित कर सकते हैं (पीईपी 370 या docs.python.org देखें)। सवाल वास्तव में क्या है?

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

मुझे "पायथन पर्यावरण के घटकों" के स्थान के बारे में प्रश्न नहीं समझा जाता है।

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

0

इस क्षेत्र के लिए एक संसाधन टैरेक ज़ियाद द्वारा विशेषज्ञ पायथन प्रोग्रामिंग पुस्तक है। मैं पुस्तक की गुणवत्ता के प्रति द्विपक्षीय हूं, लेकिन कवर किए गए विषय वही हैं जो आप ध्यान केंद्रित कर रहे हैं।

8

मुझे पता चला है कि virtualenv एक ही मशीन पर कई वातावरण को कॉन्फ़िगर और बनाए रखने का एकमात्र विश्वसनीय तरीका है। यह पर्यावरण को पैकेज करने और इसे किसी अन्य मशीन पर स्थापित करने का एक तरीका है।

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

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