मैं सिर्फ virtualenv
Python3.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 install
sudo
कुछ निर्देशिका में आप पहले से ही स्वयं हैं, इसलिए आपको आवश्यकता नहीं होगीsudo
इसमें पुस्तकालय स्थापित करने की अनुमति। अंत में यह बहु-अजगर सुरक्षित है , क्योंकि जब आभासी वातावरण सक्रिय होता है, तो शेल केवल अजगर संस्करण (3.4, 3.5 आदि) को देखता है जो उस आभासी वातावरण को बनाने के लिए उपयोग किया गया था।
pyenv
इसके समान है venv
कि यह आपको कई अजगर वातावरण का प्रबंधन करने देता है। हालाँकि, pyenv
आप आसानी से रोलबैक लाइब्रेरी को कुछ शुरुआती स्थिति में स्थापित नहीं कर सकते हैं और आपको admin
पुस्तकालयों को अपडेट करने के लिए कुछ बिंदु पर विशेषाधिकारों की आवश्यकता होगी । इसलिए मुझे लगता है कि इसका उपयोग करना भी सबसे अच्छा है venv
।
पिछले कुछ वर्षों में मैंने बिल्ड सिस्टम (एमएसीएस पैकेज, पायथन स्टैंडअलोन एप्लिकेशन बिल्डरों, इंस्टॉलर ...) में कई समस्याएं पाई हैं, जो अंततः मुद्दों के साथ आते हैं virtualenv
। मुझे लगता है कि जब हम इस अतिरिक्त विकल्प को खत्म करते हैं और केवल उपयोग करते हैं तो अजगर एक बेहतर मंच होगा venv
।