जवाबों:
कई तर्क हैं:
यह ज्यादातर सच है। यदि, उदाहरण के लिए, आप python-django
मेरे पास इंस्टॉल करें , तो आपको सुरक्षा अपडेट मिलते हैं। यह अच्छा है क्योंकि आपको केवल उपयुक्त तरीके से शीर्ष पर रखना है लेकिन अपडेट अपडेट करने से पहले आपको अभी भी चीजों का परीक्षण करना होगा (हालांकि परीक्षण हर बार ठीक होना चाहिए)।
आप तर्क दे सकते हैं कि यदि आपने उपयोग किया है pip
, तो आप अपडेट के लिए कभी भी जांच नहीं कर सकते।
pip
ताकि आप उचित "स्थिर" संस्करणों का उपयोग कर सकें।इसके बारे में कोई संदेह नहीं है: असली दुनिया में रेपो पिछड़ जाते हैं। Django 2.0 है लेकिन उबंटू के एलटीएस संस्करण के लिए रिपोज (जो कि बहुत से लोग सर्वर के साथ चिपके रहते हैं) आपको केवल Ubuntu 16.4 लेट्स पर पायथन 2 के साथ 1.8 मिलता है लेकिन फिर भी इस पर सुरक्षा अपडेट मिलते हैं।
pip
आपको हर समय नवीनतम देता है। आपको बस उन्हें स्वयं अपडेट करना होगा।
जब आप उबंटू को अगले संस्करण में विचलित करते हैं, तो यह बहुत सारे संकुल को अपग्रेड करता है। बहुत सी चीजें बदल जाती हैं। मुझे पता है कि Django में इसका मतलब है कि आपको कोड-असंगतताओं, पदावनतियों को देखने के लिए ध्यान रखना होगा ... लेकिन यही बात अन्य सभी पायथन कोडों पर भी लागू होती है।
वही सच है pip
लेकिन pip
आप एक समय में एक काम करते हैं। आप जानते हैं कि किन समस्याओं का कारण बनता है ताकि आप जान सकें कि फ़िक्स को ढूंढना कहाँ है।
pip
+ virtualenv
आपको चीजों को अलग रखने देता हैvirtualenv
आप पोर्टेबल, छोटे अजगर वातावरण है। यह आपको एक ही मशीन पर एक-दूसरे के साथ चलने वाले कई अलग-अलग पायथन वातावरण बनाने की अनुमति देता है।
स्पष्ट वरदान रखरखाव के लिए लगता है जैसे आप कोड को प्रबंधित करते हैं उसी तरह से पर्यावरण को प्रबंधित कर सकते हैं। यहां तक कि पर्यावरण को VCS में भी संग्रहीत करें ... लेकिन आपको याद रखना चाहिए कि बारह अलग-अलग virtualenv
s होने का मतलब है बारह वातावरण जिसकी आपको जांच करने और अपडेट करने की आवश्यकता है।
संपादित करें: ल्यूसिड से सटीक करने के लिए एक सर्वर पर उन्नयन की एक भयानक श्रृंखला के बाद, मैंने एक मिश्रित Apt + pip (nr 1 और 2) से एक शुद्ध pip + virtualenv (nr। 4) स्थिति पर स्विच किया है। प्रति साइट एक virtualenv होने के बजाय, मैंने एक को एक दर्जन से अधिक साइटों के बीच साझा किया है। यह अभी के लिए काम कर रहा है।
मुझे एक छोटी सी स्क्रिप्ट भी लिखनी है जो कि पाइप के साथ स्थापित पैकेज की स्थिति की जांच करती है। यदि अपडेट हैं तो मुझे उन्हें मैन्युअल रूप से लागू करना होगा (जो कि अच्छा है क्योंकि मैं उन्हें स्थानीय रूप से टेस्ट करता हूं, स्थानीय वर्चुअन में)। यह सब अभी भी एक छोटे से अधिक दर्दनाक की तुलना में यह मूल रूप से, लेकिन था बहुत लंबे समय में बेहतर है।
रिपॉजिटरी से पैकेज
जब भी आपका आवेदन किसी तरह से उबंटू के लिए विशिष्ट हो, तो इन्हें स्थापित किया जाना चाहिए । वे आपको एक स्थिर संस्करण की गारंटी देते हैं जिसे आप उबंटू मशीनों में स्थापित कर सकते हैं, वे समर्थित हैं और कभी-कभी पाइप के माध्यम से प्राप्त होने वाले की तुलना में अधिक परिपक्व होते हैं। यदि आप ubuntu सर्वर का एक गुच्छा तैनात करते हैं, या यदि आप एक उबंटू अनुप्रयोग लिख रहे हैं , तो इनका उपयोग करें, यदि उपलब्ध हो ।
इनमें कभी-कभी उबंटू-विशिष्ट संशोधन भी होते हैं।
पाइप बनाम easy_install
उन लोगों के बारे में कहने के लिए बहुत कुछ नहीं है, जैसा कि Django हैकर जेम्स बेनेट ने रखा था:
कृपया, गुइडो के प्यार के लिए, सेटपूल और easy_install का उपयोग करना बंद करें, और इसके बजाय डिस्टिल और पाइप का उपयोग करें।
मतभेदों पर गहन चर्चा के लिए, जेम्स बेनेट (django के) द्वारा पैकेजिंग पर और आयन बेकिंग (मोज़िला की) द्वारा "पैकेजिंग पर" कुछ सुधार देखें ।
यदि आप सुरक्षित रहना चाहते हैं, तो virtualenv का उपयोग करके अपने पाइप की तैनाती का प्रयास करें । यह आपको एक अलग-थलग अजगर वातावरण देता है, जिससे आप सुनिश्चित हो सकते हैं कि आपका ऐप किसी भी मशीन पर चलेगा।
हालांकि थोड़ा इंतजार करें, मुझे विश्वास है कि कुछ लोग मुझसे असहमत होंगे।