मैं सिर्फ virtualenvPython3.3 + के बाद के उपयोग से बचूंगा और इसके बजाय मानक शिप लाइब्रेरी का उपयोग करूंगा venv। एक नया आभासी वातावरण बनाने के लिए आप टाइप करेंगे:
$ python3 -m venv <MYVENV>
virtualenvवर्चुअल वातावरण में पायथन बाइनरी को कॉपी करने की कोशिश करता है। हालाँकि यह उस बाइनरी में एम्बेडेड लाइब्रेरी फ़ाइल लिंक को अपडेट नहीं करता है, इसलिए यदि आप स्रोत से पायथॉन बाइनरी ब्रेक के साथ गैर-सिस्टम निर्देशिका में पायथन का निर्माण करते हैं। चूंकि यह है कि आप एक वितरण योग्य पायथन कैसे बनाते हैं, यह एक बड़ा दोष है। BTW OS X, उपयोग पर एम्बेडेड लाइब्रेरी फ़ाइल लिंक का निरीक्षण करने के लिए otool। अपने आभासी वातावरण में उदाहरण के लिए, टाइप करें:
$ otool -L bin/python
python:
@executable_path/../Python (compatibility version 3.4.0, current version 3.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
नतीजतन मैं बचता virtualenvwrapperऔर बचता pipenv। pyvenvपदावनत किया गया है। pyenvलगता है जहाँ अक्सर उपयोग किया जाता है, virtualenvलेकिन मैं इससे भी दूर रहूँगा क्योंकि मुझे लगता है कि venvयह भी वही करता है जो इसके pyenvलिए बनाया गया है।
venvशेल में आभासी वातावरण बनाता है जो उपयोगकर्ता-इंस्टॉल करने योग्य पुस्तकालयों के साथ ताजा और सैंडबॉक्स किया जाता है , और यह बहु-अजगर सुरक्षित है । ताजा क्योंकि आभासी वातावरण केवल मानक पुस्तकालयों के साथ शुरू होता है जो अजगर के साथ जहाज करते हैं, आपको वर्चुअल वातावरण के सक्रिय होने के दौरान किसी भी अन्य लाइब्रेरी को फिर से स्थापित करना होगा । Sandboxed क्योंकि इनमें से कोई भी नई लाइब्रेरी इंस्टॉल वर्चुअल वातावरण के बाहर दिखाई नहीं देती है, इसलिए आप पूरे वातावरण को हटा सकते हैं और अपने बेस पायथन इंस्टॉल को प्रभावित करने की चिंता किए बिना फिर से शुरू कर सकते हैं। उपयोगकर्ता-इंस्टॉल करने योग्य लाइब्रेरी क्योंकि वर्चुअल वातावरण का लक्ष्य फ़ोल्डर बिना बनाया गया हैpip installsudoकुछ निर्देशिका में आप पहले से ही स्वयं हैं, इसलिए आपको आवश्यकता नहीं होगीsudoइसमें पुस्तकालय स्थापित करने की अनुमति। अंत में यह बहु-अजगर सुरक्षित है , क्योंकि जब आभासी वातावरण सक्रिय होता है, तो शेल केवल अजगर संस्करण (3.4, 3.5 आदि) को देखता है जो उस आभासी वातावरण को बनाने के लिए उपयोग किया गया था।
pyenvइसके समान है venvकि यह आपको कई अजगर वातावरण का प्रबंधन करने देता है। हालाँकि, pyenvआप आसानी से रोलबैक लाइब्रेरी को कुछ शुरुआती स्थिति में स्थापित नहीं कर सकते हैं और आपको adminपुस्तकालयों को अपडेट करने के लिए कुछ बिंदु पर विशेषाधिकारों की आवश्यकता होगी । इसलिए मुझे लगता है कि इसका उपयोग करना भी सबसे अच्छा है venv।
पिछले कुछ वर्षों में मैंने बिल्ड सिस्टम (एमएसीएस पैकेज, पायथन स्टैंडअलोन एप्लिकेशन बिल्डरों, इंस्टॉलर ...) में कई समस्याएं पाई हैं, जो अंततः मुद्दों के साथ आते हैं virtualenv। मुझे लगता है कि जब हम इस अतिरिक्त विकल्प को खत्म करते हैं और केवल उपयोग करते हैं तो अजगर एक बेहतर मंच होगा venv।