easy_install / पाइप या उपयुक्त


30

जैसा कि रेल पर उबंटू विकी पेज में दिया गया है, यह अनुशंसा की जाती है कि रत्न आपके रेल / रूबी निर्भरता का प्रबंधन करता है।

Django जैसे पायथन पैकेज के साथ सबसे अच्छा अभ्यास क्या है? क्या मुझे उन्हें उपयुक्त माध्यम से स्थापित करना चाहिए या क्या मुझे PyPi से easy_install / pip लाने देना चाहिए?

जवाबों:


29

कई तर्क हैं:

  1. Repositories / PPA का उपयोग करें क्योंकि वे आपको सुरक्षा सुधारों के साथ स्थिर और अद्यतित रखेंगे।

    यह ज्यादातर सच है। यदि, उदाहरण के लिए, आप python-djangoमेरे पास इंस्टॉल करें , तो आपको सुरक्षा अपडेट मिलते हैं। यह अच्छा है क्योंकि आपको केवल उपयुक्त तरीके से शीर्ष पर रखना है लेकिन अपडेट अपडेट करने से पहले आपको अभी भी चीजों का परीक्षण करना होगा (हालांकि परीक्षण हर बार ठीक होना चाहिए)।

    आप तर्क दे सकते हैं कि यदि आपने उपयोग किया है pip, तो आप अपडेट के लिए कभी भी जांच नहीं कर सकते।

  2. उपयोग करें pipताकि आप उचित "स्थिर" संस्करणों का उपयोग कर सकें।

    इसके बारे में कोई संदेह नहीं है: असली दुनिया में रेपो पिछड़ जाते हैं। Django 2.0 है लेकिन उबंटू के एलटीएस संस्करण के लिए रिपोज (जो कि बहुत से लोग सर्वर के साथ चिपके रहते हैं) आपको केवल Ubuntu 16.4 लेट्स पर पायथन 2 के साथ 1.8 मिलता है लेकिन फिर भी इस पर सुरक्षा अपडेट मिलते हैं।

    pipआपको हर समय नवीनतम देता है। आपको बस उन्हें स्वयं अपडेट करना होगा।

  3. रेपो-उपयोग किए गए पायथन को अपग्रेड करना एक बुरा सपना हो सकता है

    जब आप उबंटू को अगले संस्करण में विचलित करते हैं, तो यह बहुत सारे संकुल को अपग्रेड करता है। बहुत सी चीजें बदल जाती हैं। मुझे पता है कि Django में इसका मतलब है कि आपको कोड-असंगतताओं, पदावनतियों को देखने के लिए ध्यान रखना होगा ... लेकिन यही बात अन्य सभी पायथन कोडों पर भी लागू होती है।

    वही सच है pipलेकिन pipआप एक समय में एक काम करते हैं। आप जानते हैं कि किन समस्याओं का कारण बनता है ताकि आप जान सकें कि फ़िक्स को ढूंढना कहाँ है।

  4. pip+ virtualenvआपको चीजों को अलग रखने देता है

    virtualenvआप पोर्टेबल, छोटे अजगर वातावरण है। यह आपको एक ही मशीन पर एक-दूसरे के साथ चलने वाले कई अलग-अलग पायथन वातावरण बनाने की अनुमति देता है।

    स्पष्ट वरदान रखरखाव के लिए लगता है जैसे आप कोड को प्रबंधित करते हैं उसी तरह से पर्यावरण को प्रबंधित कर सकते हैं। यहां तक ​​कि पर्यावरण को VCS में भी संग्रहीत करें ... लेकिन आपको याद रखना चाहिए कि बारह अलग-अलग virtualenvs होने का मतलब है बारह वातावरण जिसकी आपको जांच करने और अपडेट करने की आवश्यकता है।


संपादित करें: ल्यूसिड से सटीक करने के लिए एक सर्वर पर उन्नयन की एक भयानक श्रृंखला के बाद, मैंने एक मिश्रित Apt + pip (nr 1 और 2) से एक शुद्ध pip + virtualenv (nr। 4) स्थिति पर स्विच किया है। प्रति साइट एक virtualenv होने के बजाय, मैंने एक को एक दर्जन से अधिक साइटों के बीच साझा किया है। यह अभी के लिए काम कर रहा है।

मुझे एक छोटी सी स्क्रिप्ट भी लिखनी है जो कि पाइप के साथ स्थापित पैकेज की स्थिति की जांच करती है। यदि अपडेट हैं तो मुझे उन्हें मैन्युअल रूप से लागू करना होगा (जो कि अच्छा है क्योंकि मैं उन्हें स्थानीय रूप से टेस्ट करता हूं, स्थानीय वर्चुअन में)। यह सब अभी भी एक छोटे से अधिक दर्दनाक की तुलना में यह मूल रूप से, लेकिन था बहुत लंबे समय में बेहतर है।


10
  • रिपॉजिटरी से पैकेज

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

    इनमें कभी-कभी उबंटू-विशिष्ट संशोधन भी होते हैं।

  • पाइप बनाम easy_install

    उन लोगों के बारे में कहने के लिए बहुत कुछ नहीं है, जैसा कि Django हैकर जेम्स बेनेट ने रखा था:

    कृपया, गुइडो के प्यार के लिए, सेटपूल और easy_install का उपयोग करना बंद करें, और इसके बजाय डिस्टिल और पाइप का उपयोग करें।

    मतभेदों पर गहन चर्चा के लिए, जेम्स बेनेट (django के) द्वारा पैकेजिंग पर और आयन बेकिंग (मोज़िला की) द्वारा "पैकेजिंग पर" कुछ सुधार देखें

यदि आप सुरक्षित रहना चाहते हैं, तो virtualenv का उपयोग करके अपने पाइप की तैनाती का प्रयास करें । यह आपको एक अलग-थलग अजगर वातावरण देता है, जिससे आप सुनिश्चित हो सकते हैं कि आपका ऐप किसी भी मशीन पर चलेगा।

हालांकि थोड़ा इंतजार करें, मुझे विश्वास है कि कुछ लोग मुझसे असहमत होंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.