कुछ समय के लिए, पायथन ने आभासी वातावरण के प्रबंधन के लिए समर्थन शामिल किया है। पायथन 3.3 ने बिल्ट-इन भी जोड़ा venv तृतीय-पक्ष पुस्तकालयों के बिना वातावरण बनाने के लिए मॉड्यूल। पायथन प्रोग्रामर अपने वातावरण को प्रबंधित करने के लिए कई अलग-अलग उपकरणों का उपयोग करते हैं, और जो मैं उपयोग करता हूं उसे कहा जाता है virtualenvwrapper।
वर्चुअल वातावरण आपके पायथन प्रोजेक्ट और इसकी निर्भरता को आपके सिस्टम द्वारा स्थापित पायथन से अलग करने का एक तरीका है। यदि आप एक macOS या लिनक्स-आधारित ऑपरेटिंग सिस्टम का उपयोग करते हैं, तो यह बहुत संभव है कि अधिष्ठापन के भाग के रूप में पायथन के एक संस्करण के साथ आता है, और वास्तव में, यह संभवतः ठीक से कार्य करने के लिए पायथन के उस विशेष संस्करण पर निर्भर करेगा। लेकिन यह आपका कंप्यूटर है, और आप इसे अपने उद्देश्यों के लिए उपयोग करना चाह सकते हैं। ऑपरेटिंग सिस्टम प्रदान करने की तुलना में आपको पायथन का दूसरा संस्करण स्थापित करने की आवश्यकता हो सकती है। आपको कुछ अतिरिक्त लाइब्रेरी भी स्थापित करने की आवश्यकता हो सकती है। हालाँकि यह आपके सिस्टम पायथन को अपग्रेड करना संभव है, यह अनुशंसित नहीं है। अन्य पुस्तकालयों को स्थापित करना भी संभव है, लेकिन आपको इस बात का ध्यान रखना चाहिए कि सिस्टम जिस चीज़ पर निर्भर करता है, उसके साथ हस्तक्षेप न करें।
वर्चुअल वातावरण अलग-अलग बनाने के लिए महत्वपूर्ण हैं जिन्हें आपको पायथन के विभिन्न संस्करणों और पैकेजों के विभिन्न संयोजनों के साथ सुरक्षित रूप से टिंकर करने की आवश्यकता है। वे आपको विभिन्न परियोजनाओं के लिए एक ही पुस्तकालय के विभिन्न संस्करणों को स्थापित करने की भी अनुमति देते हैं, जो कि हल करता है कि यदि आपकी सभी परियोजनाओं की आवश्यकताओं को एक ही वातावरण में स्थापित किया गया था तो क्या असंभव होगा।
क्यों virtualenvwrapper अन्य उपकरणों पर? संक्षेप में:
- बल्कि होने से
venv
अपनी परियोजना निर्देशिका के अंदर या उसके साथ निर्देशिका, virtualenvwrapper आपके सभी वातावरणों को एक स्थान पर रखता है:~/.virtualenvs
डिफ़ॉल्ट रूप से। - यह आसानी से वातावरण बनाने और सक्रिय करने के लिए कमांड प्रदान करता है, और सक्रियण सही का पता लगाने पर भरोसा नहीं करता है
activate
स्क्रिप्ट। यह सिर्फworkon projectname
(कहीं से भी) के बजायsource ~/Projects/flashylights-env/bin/activate
।
शुरू करना
सबसे पहले, यह समझने के लिए समय निकालना महत्वपूर्ण है कि आपका सिस्टम पायथन कैसे कॉन्फ़िगर किया गया है और कैसे है रंज उपकरण काम करता है।
एक उदाहरण के रूप में रास्पबेरी पाई ओएस का उपयोग करने के लिए, ऑपरेटिंग सिस्टम पायथन 2.7 और 3.7 स्थापित दोनों के साथ आता है। यह अलग-अलग उदाहरण भी प्रदान करता है रंज, प्रत्येक संस्करण के लिए एक:
- आदेश
python
पायथन 2.7 चलाता है और पर स्थित है/usr/bin/python
। - आदेश
python3
पायथन 3.7 चलाता है और पर स्थित है/usr/bin/python3
। - आदेश
pip
पायथन 2.7 के लिए पैकेज स्थापित करता है और पर स्थित है/usr/bin/pip
। - आदेश
pip3
पायथन 3.7 के लिए पैकेज स्थापित करता है और यह स्थित है/usr/bin/pip3
।
जब यह आता है तो मामलों की अपनी स्थिति को सत्यापित करना उपयोगी होता है python
तथा pip
वर्चुअल वातावरण का उपयोग शुरू करने से पहले कमांड। आपके बारे में अधिक जानकारी pip
कमांड चलाकर उदाहरणों को पाया जा सकता है pip debug
या pip3 debug
।
मेरे लिनक्स कंप्यूटर पर बराबर जानकारी, जो उबंटू चलाता है, लगभग समान है (सिवाय इसके कि यह पायथन 3.8 है); और यह मेरी मैकबुक पर बहुत समान है, सिवाय इसके कि एकमात्र सिस्टम पायथन 2.6 है, और मैंने उपयोग किया brew
पायथन 3.8 को स्थापित करने के लिए, इसलिए यह पर स्थित है /usr/local/bin/python3
इसके बजाय (साथ में) pip3
) है।
Virtualenvwrapper स्थापित करना
आपको अपने सिस्टम का उपयोग करके virtualenvwrapper स्थापित करना होगा pip
पायथन 3 के लिए:
sudo pip3 install virtualenvwrapper
अगला कदम virtualenvwrapper कमांड को लोड करने के लिए आपके शेल को कॉन्फ़िगर करना है। आप अपने शेल की RC फ़ाइल को संपादित करके ऐसा करते हैं (जैसे .bashrc
, .bash_profile
, या .zshrc
) और निम्नलिखित पंक्तियों को जोड़ना:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
यदि आपका पायथन 3 कहीं और स्थित है, तो अपने सेटअप के अनुसार पहली पंक्ति को बदलें।
अपना टर्मिनल बंद करें और प्रभावी होने के लिए इसे फिर से खोलें। पहली बार जब आप टर्मिनल खोलते हैं, तो आपको virtualenvwrapper से कुछ आउटपुट देखना चाहिए। यह केवल एक बार होगा, क्योंकि कुछ निर्देशिकाएं सेटअप के भाग के रूप में बनाई जाती हैं।
अब आपको कमांड टाइप करने में सक्षम होना चाहिए mkvirtualenv --version
यह सत्यापित करने के लिए कि virtualenvwrapper स्थापित है।
एक नया आभासी वातावरण बनाना
कहते हैं कि आप एक परियोजना पर काम कर रहे हैं चमकता हुआ। इस नाम से वर्चुअल वातावरण बनाने के लिए, कमांड चलाएँ:
mkvirtualenv flashylights
पर्यावरण बनाया और सक्रिय किया गया है, इसलिए आप देखेंगे (flashlylights)
आपके संकेत से पहले प्रकट होता है:
अब जब पर्यावरण सक्रिय हो गया है, चीजें बदल गई हैं। python
अब आपके सिस्टम पर पहले पहचाने गए एक (ओं) की तुलना में पूरी तरह से अलग पायथन उदाहरण पर इंगित करता है। यह आपके वातावरण के लिए एक निर्देशिका बनाई गई है और पायथन 3 बाइनरी, पिप कमांड, और इसके अंदर और अधिक की एक प्रति रखी है। प्रकार which python
तथा which pip
यह देखने के लिए कि वे कहाँ स्थित हैं:
यदि आप अब पायथन प्रोग्राम चलाते हैं, तो आप इसे चला सकते हैं python
के बजाय python3
, और आप उपयोग कर सकते हैं pip
के बजाय pip3
। आपके द्वारा उपयोग किया जा रहा कोई भी पैकेज pip
अकेले इस वातावरण में स्थापित किया जाएगा, और वे आपकी अन्य परियोजनाओं, अन्य वातावरण, या आपके सिस्टम की स्थापना में हस्तक्षेप नहीं करेंगे।
पर्यावरण को निष्क्रिय करने के लिए, कमांड चलाएं deactivate
। इसे फिर से सक्षम करने के लिए, चलाएं workon flashylights
।
आप सभी उपलब्ध वातावरणों को सूचीबद्ध कर सकते हैं workon
या उपयोग करें lsvirtualenv
। आप के साथ एक वातावरण हटा सकते हैं rmvirtualenv flashylights
।
आभासी वातावरण को अपनी विकास दिनचर्या में शामिल करना एक समझदारी की बात है। मेरे अनुभव में, यह मुझे सिस्टम-वाइड के साथ प्रयोग किए जा रहे पुस्तकालयों को स्थापित करने से रोकता है, जिससे समस्याएं हो सकती हैं। मैं virtualenvwrapper को अपनी दिनचर्या में शामिल करने और बहुत अधिक आदेशों को याद किए बिना या बहुत अधिक याद किए बिना अपने प्रोजेक्ट वातावरण को परेशानी से मुक्त करने का सबसे आसान तरीका ढूंढता हूं।
उन्नत सुविधाओं
- आप अपने सिस्टम पर कई पायथन संस्करण स्थापित कर सकते हैं (जैसे, का उपयोग करके deadsnakes पीपीए उबंटू पर) और उदाहरण के लिए, उस विशेष संस्करण के साथ एक आभासी वातावरण बनाएं,
mkvirtualenv -p /usr/bin/python3.9 myproject
। - आप एक निर्देशिका में प्रवेश / छोड़ने पर सक्रियण / निष्क्रिय कर सकते हैं।
- आप उपयोग कर सकते हैं
postmkvirtualenv
हर बार एक नया वातावरण बनाने के लिए सामान्य उपकरण स्थापित करने के लिए हुक।
में और सुझाव देखें डॉक्स।
यह लेख बेन न्यूटल के पर आधारित है टूलींग मंगलवार की पोस्ट virtualenvwrapper पर और अनुमति के साथ पुन: उपयोग किया जाता है।