Pyenv, virtualenv, anaconda में क्या अंतर है?


141

मैं अजगर सीखने की कोशिश कर रहा एक रूबी प्रोग्रामर हूं। मैं pyenv के साथ सुंदर परिवार हूं क्योंकि यह rbenv से कॉपी और पेस्ट की तरह है। पायनेव एक प्रणाली में अजगर के एक से अधिक संस्करण होने की अनुमति देता है और सिस्टम के संवेदनशील हिस्से को छूने के बिना अजगर को अलग करने के लिए भी अनुमति देता है।

मुझे लगता है कि हर अजगर स्थापना पाइप पैकेज के साथ आती है। मुझे अभी भी समझ में नहीं आ रहा है, वहाँ कई अच्छे अजगर लिबास हैं जो इस वर्चुअन और एनाकोंडा का उपयोग करने का सुझाव देते हैं। मैं भी pyenv के लिए virtualenv प्लगइन पा सकते हैं।

अब मैं इन दो pyenv और virtualenv के उद्देश्य से भ्रमित हो रहा हूं। pyenv के अंदर बदतर एक virtualenv प्लगइन है।

मेरे प्रश्न हैं:

  • pyenv और virtualenv में क्या अंतर है?
  • क्या pyenv और virtualenv दोनों के अंदर पाइप कमांड का उपयोग करने में कोई अंतर है?
  • यह पाइनव वायरललेनव क्या करता है?

उदाहरण के साथ आपके स्पष्टीकरण की बहुत सराहना की जाएगी।



इस प्रश्न को देखें: virtualenv और pyenv के बीच संबंध
reza.bm

जवाबों:


152

संपादित करें: यह की कीमत का उल्लेख pipयहाँ साथ ही, condaऔर pipसमानता और अंतर यह है कि इस विषय के लिए प्रासंगिक हैं

पाइप: पायथन पैकेज मैनेजर।

  • आप pipरूबी gemकमांड के बराबर अजगर के रूप में सोच सकते हैं
  • pip डिफ़ॉल्ट रूप से अजगर के साथ शामिल नहीं है।
  • आप होमब्रे का उपयोग करके पायथन स्थापित कर सकते हैं , जो स्वचालित रूप से पाइप स्थापित करेगा:brew install python
  • OSX के अंतिम संस्करण में डिफ़ॉल्ट रूप से पाइप शामिल नहीं था। अपने मैक सिस्टम के अजगर के संस्करण में पाइप जोड़ने के लिए, आप कर सकते हैंsudo easy_install pip
  • आप PyPI: पायथन पैकेज इंडेक्स का उपयोग करके अजगर पैकेज पा सकते हैं और प्रकाशित कर सकते हैं
  • आवश्यकताएँ। फ़ाइल रूबी के लिए तुलनीय है gemfile
  • एक आवश्यकताएँ पाठ फ़ाइल बनाने के लिए, pip freeze > requirements.txt
  • ध्यान दें, इस बिंदु पर, हमने अपने सिस्टम पर अजगर स्थापित किया है, और हमने एक आवश्यकताओं की निर्माण किया है। एक फ़ाइल जो आपके सिस्टम पर स्थापित अजगर पैकेज के सभी को रेखांकित करती है।

pyenv: पायथन संस्करण प्रबंधक

  • डॉक्स से : पाइनेव आपको पायथन के कई संस्करणों के बीच आसानी से स्विच करने देता है। यह सरल, विनीत है, और एकल उद्देश्य वाले उपकरणों की UNIX परंपरा का पालन करता है जो एक काम अच्छी तरह से करते हैं। इस प्रोजेक्ट को rbenv और रूबी-बिल्ड से फोर्क किया गया और पाइथन के लिए संशोधित किया गया।
  • बहुत से लोग python3 का उपयोग करने में संकोच करते हैं
  • यदि आपको अजगर के विभिन्न संस्करणों का उपयोग करने की आवश्यकता है, pyenvतो आप इसे आसानी से प्रबंधित कर सकते हैं।

virtualenv: पायथन पर्यावरण प्रबंधक।

  • डॉक्स से : संबोधित की जा रही मूल समस्या निर्भरता और संस्करणों और अप्रत्यक्ष रूप से अनुमतियों में से एक है। कल्पना कीजिए कि आपके पास एक एप्लिकेशन है जिसे LibFoo के संस्करण 1 की आवश्यकता है, लेकिन किसी अन्य एप्लिकेशन को संस्करण 2 की आवश्यकता है। आप इन दोनों अनुप्रयोगों का उपयोग कैसे कर सकते हैं? यदि आप /usr/lib/python2.7/site-packages (या जो भी आपके प्लेटफ़ॉर्म का मानक स्थान है) में सब कुछ स्थापित करते हैं, तो ऐसी स्थिति में समाप्त करना आसान है, जहां आप अनजाने में एक ऐसे एप्लिकेशन को अपग्रेड करते हैं जिसे अपग्रेड नहीं किया जाना चाहिए।
  • एक बनाने के लिए virtualenv, बस आह्वान करें virtualenv ENV, जहां ENVनए आभासी वातावरण को रखने के लिए एक निर्देशिका है।
  • आरंभ करने के लिए virtualenv, आपको करने की आवश्यकता है source ENV/bin/activate। उपयोग करना बंद करने के लिए, बस कॉल करें deactivate
  • एक बार जब आप सक्रिय हो जाते हैं virtualenv, तो आप pip install -rप्रोजेक्ट की requirements.txtफ़ाइल के विरुद्ध चलकर कार्यक्षेत्र की सभी पैकेज आवश्यकताओं को स्थापित कर सकते हैं ।

एनाकोंडा: पैकेज मैनेजर + पर्यावरण प्रबंधक + अतिरिक्त वैज्ञानिक पुस्तकालय।

  • डॉक्स से : एनाकोंडा 4.2.0 में पायथन (2.7.12, 3.4.5, और / या 3.5.2) की एक आसान स्थापना और 100 से अधिक पूर्व-निर्मित और परीक्षण किए गए वैज्ञानिक और विश्लेषणात्मक पायथन पैकेजों के अपडेट शामिल हैं, जिनमें न्यूमी, पंडस शामिल हैं , SciPy, Matplotlib और IPython, 620 से अधिक पैकेजों के साथ एक साधारण के माध्यम से उपलब्ध हैंconda install <packagename>
  • एक वेब डेवलपर के रूप में, मैंने एनाकोंडा का उपयोग नहीं किया है। यह सभी पैकेजों सहित ~ 3 जीबी है।
  • एक पतला नीचे minicondaसंस्करण है, जो ऐसा लगता है कि यह pip+ का उपयोग करने की तुलना में अधिक सरल विकल्प हो सकता है virtualenv, हालांकि मुझे व्यक्तिगत रूप से इसका उपयोग करने का अनुभव नहीं है।
  • जबकि condaआप पैकेजों को स्थापित करने की अनुमति देते हैं, ये पैकेज PyPI पैकेजों से अलग होते हैं, इसलिए आपको अभी भी उन पैकेजों के प्रकार के आधार पर पाइप का उपयोग करने की आवश्यकता हो सकती है, जिन्हें आपको इंस्टॉल करने की आवश्यकता है।

यह सभी देखें:


3
यह शायद अब एक रिफ्रेश का उपयोग कर सकता है, cf stackoverflow.com/a/49084152/14420
मैट विल्की

9
इसे पिपेनव में शामिल करने के लिए अपडेट किया जा सकता है क्योंकि यह वर्तमान में Python.org से आधिकारिक तौर पर अनुशंसित पायथन पैकेजिंग टूल लगता है?
वेवसैलर

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

@ मुझे थोड़ा देर हो गई है, लेकिन क्या आप वीवीएन पर विस्तार कर सकते हैं, यह मेरे लिए एक आकर्षक वर्कफ़्लो जैसा है ?
AMC

1

सरल सादृश्य:

  • pyenv ~ रेंबव
  • पिप ~ बंडलर
  • rvm में वर्चुअल एनवी ~ रत्न। यह सीधे जेवरात के बिना बंडल द्वारा प्रबंधित किया जा सकता है।

चूँकि मैं python3 का उपयोग करता हूं इसलिए मैं python3 को अंतर्निहित वर्चुअल वातावरण में पसंद करता हूं जिसका नाम venv हैvenv सरल और प्रयोग करने में आसान है। मैं आपको इसके आधिकारिक डॉक्स पढ़ने की सलाह दूंगा। डॉक्टर छोटा और संक्षिप्त है।

रूबी में, हमें वास्तव में एक आभासी वातावरण की आवश्यकता नहीं है क्योंकि बंडलर इसका ध्यान रखता है। आभासी env और बंडल दोनों ही महान हैं लेकिन उनकी अलग अवधारणा है लेकिन वे एक ही समस्या को हल करने का प्रयास करते हैं।

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