Python Language
आभासी वातावरण
खोज…
परिचय
एक आभासी पर्यावरण उनके लिए आभासी पायथन वातावरण बनाकर, अलग-अलग स्थानों में अलग-अलग परियोजनाओं के लिए आवश्यक निर्भरता को बनाए रखने के लिए एक उपकरण है। यह "प्रोजेक्ट X संस्करण 1.x पर निर्भर करता है, लेकिन प्रोजेक्ट Y को 4.x" दुविधा पर निर्भर करता है, और आपकी वैश्विक साइट-संकुल निर्देशिका को स्वच्छ और प्रबंधनीय रखता है।
यह आपके वातावरण को एक दूसरे से और आपके सिस्टम पुस्तकालयों से अलग-अलग परियोजनाओं के लिए अलग करने में मदद करता है।
टिप्पणियों
आभासी वातावरण पर्याप्त रूप से उपयोगी होते हैं कि उनका उपयोग शायद हर परियोजना के लिए किया जाना चाहिए। विशेष रूप से, आभासी वातावरण आपको इसकी अनुमति देता है:
- रूट एक्सेस की आवश्यकता के बिना निर्भरता प्रबंधित करें
- उदाहरण के लिए, अलग-अलग आवश्यकताओं के साथ विभिन्न परियोजनाओं पर काम करते समय एक ही निर्भरता के विभिन्न संस्करणों को स्थापित करें
- विभिन्न अजगर संस्करणों के साथ काम करें
वर्चुअल वातावरण बनाना और उपयोग करना
virtualenv पृथक पायथन वातावरण बनाने के लिए एक उपकरण है। यह प्रोग्राम एक फ़ोल्डर बनाता है जिसमें उन सभी आवश्यक निष्पादन योग्य होते हैं जो उन पैकेजों का उपयोग करने के लिए होते हैं जिन्हें पायथन परियोजना की आवश्यकता होती है।
Virtualenv टूल इंस्टॉल करना
यह केवल एक बार आवश्यक है। virtualenv प्रोग्राम आपके वितरण के माध्यम से उपलब्ध हो सकता है। डेबियन जैसे वितरणों पर, पैकेज को python-virtualenv python3-virtualenv या python3-virtualenv कहा जाता है।
आप वैकल्पिक रूप से पाइप का उपयोग करके virtualenv स्थापित कर सकते हैं:
$ pip install virtualenv
एक नया आभासी वातावरण बनाना
यह केवल एक बार प्रति प्रोजेक्ट के लिए आवश्यक है। एक ऐसी परियोजना शुरू करना जिसके लिए आप निर्भरताओं को अलग करना चाहते हैं, आप इस परियोजना के लिए एक नया आभासी वातावरण सेटअप कर सकते हैं:
$ virtualenv foo
यह एक foo फ़ोल्डर बना देगा जिसमें टूलिंग स्क्रिप्ट होगी और python बाइनरी की एक प्रति ही होगी। फ़ोल्डर का नाम प्रासंगिक नहीं है। एक बार जब आभासी वातावरण बनाया जाता है, तो यह स्व-निहित होता है और virtualenv टूल के साथ आगे हेरफेर की आवश्यकता नहीं होती है। अब आप वर्चुअल वातावरण का उपयोग शुरू कर सकते हैं।
मौजूदा आभासी वातावरण को सक्रिय करना
एक आभासी वातावरण को सक्रिय करने के लिए, कुछ शेल मैजिक की आवश्यकता होती है, इसलिए आपका पायथन सिस्टम एक के बजाय foo अंदर होता है। यह activate फ़ाइल का उद्देश्य है, जिसे आपको अपने वर्तमान शेल में स्रोत करना चाहिए:
$ source foo/bin/activate
विंडोज उपयोगकर्ताओं को टाइप करना चाहिए:
$ foo\Scripts\activate.bat
एक बार एक आभासी वातावरण सक्रिय हो जाने के बाद, python और pip बायनेरिज़ और थर्ड पार्टी मॉड्यूल द्वारा स्थापित सभी स्क्रिप्ट foo अंदर होते हैं। विशेष रूप से, pip साथ स्थापित सभी मॉड्यूल वर्चुअल वातावरण में तैनात किए जाएंगे, जो एक निहित विकास के वातावरण के लिए अनुमति देगा। वर्चुअल वातावरण को सक्रिय करते हुए अपने प्रॉम्प्ट में एक उपसर्ग जोड़ना चाहिए जैसा कि निम्नलिखित कमांड्स में देखा गया है।
# Installs 'requests' to foo only, not globally
(foo)$ pip install requests
निर्भरता को सहेजना और पुनर्स्थापित करना
pip माध्यम से आपके द्वारा इंस्टॉल किए गए मॉड्यूल को बचाने के लिए, आप उन सभी मॉड्यूल (और संबंधित संस्करणों) को freeze कमांड का उपयोग करके एक टेक्स्ट फ़ाइल में सूचीबद्ध कर सकते हैं। यह दूसरों को जल्दी से स्थापित कमांड का उपयोग करके आवेदन के लिए आवश्यक पायथन मॉड्यूल स्थापित करने की अनुमति देता है। इस तरह की फ़ाइल के लिए पारंपरिक नाम requirements.txt ।
(foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt
कृपया ध्यान दें कि freeze सभी मॉड्यूल को सूचीबद्ध करता है, जिसमें आपके द्वारा मैन्युअल रूप से इंस्टॉल किए गए शीर्ष-स्तरीय मॉड्यूल द्वारा आवश्यक सकर्मक निर्भरता भी शामिल है। इस प्रकार, आप केवल जरूरत के शीर्ष स्तर के मॉड्यूल डालकर, हाथ से requirements.txt को छान सकते हैं।
आभासी वातावरण से बाहर निकलना
यदि आप वर्चुअल वातावरण में काम कर रहे हैं, तो आप इसे अपने सामान्य शेल में वापस लाने के लिए निष्क्रिय कर सकते हैं:
(foo)$ deactivate
एक साझा होस्ट में एक आभासी वातावरण का उपयोग करना
कभी-कभी यह संभव नहीं होता है कि आप किसी स्रोत को साझा करें होस्ट में mod_wsgi का उपयोग कर रहे हैं या यदि आपके पास किसी फ़ाइल सिस्टम तक पहुँच नहीं है, जैसे Amazon API Gateway, या Google AppEngine में, तो एक virtualenv $ source bin/activate । उन मामलों के लिए आप अपने स्थानीय virtualenv में स्थापित पुस्तकालयों को तैनात कर सकते हैं और अपने sys.path पैच कर सकते हैं।
सौभाग्य से एक स्क्रिप्ट के साथ virtualenv जहाज, जो आपके sys.path और आपके sys.prefix दोनों को अपडेट करता है
import os
mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
आपके सर्वर द्वारा निष्पादित की जाने वाली फ़ाइल की शुरुआत में आपको इन पंक्तियों को जोड़ना चाहिए।
यह bin/activate_this.py lib/python2.7/site-packages कि virtualenv उसी dir में फ़ाइल lib/python2.7/site-packages आप निष्पादित कर रहे हैं और अपने lib/python2.7/site-packages को sys.path
यदि आप activate_this.py स्क्रिप्ट का उपयोग करना lib/python2.7/site-packages , तो कम से कम, bin और काम lib/python2.7/site-packages निर्देशिका और उनकी सामग्री के साथ परिनियोजित करना याद रखें।
बिल्ट-इन वर्चुअल वातावरण
पायथन 3.3 के बाद से, वेव मॉड्यूल वर्चुअल वातावरण बनाएगा। pyvenv कमांड को अलग से इंस्टॉल करने की आवश्यकता नहीं है:
$ pyvenv foo
$ source foo/bin/activate
या
$ python3 -m venv foo
$ source foo/bin/activate
एक आभासी वातावरण में संकुल स्थापित करना
एक बार जब आपका आभासी वातावरण सक्रिय हो जाता है, तो आपके द्वारा इंस्टॉल किया गया कोई भी पैकेज अब virtualenv में स्थापित हो जाएगा और विश्व स्तर पर नहीं। इसलिए, नए पैकेज रूट विशेषाधिकार की आवश्यकता के बिना हो सकते हैं।
यह सत्यापित करने के लिए कि पैकेज का उपयोग किया जा रहा है virtualenv में निष्पादन योग्य का पथ जांचने के लिए निम्नलिखित कमांड चलाएँ:
(<Virtualenv Name) $ which python
/<Virtualenv Directory>/bin/python
(Virtualenv Name) $ which pip
/<Virtualenv Directory>/bin/pip
पाइप का उपयोग करके स्थापित कोई भी पैकेज virtualenv में निम्नलिखित निर्देशिका में स्थापित किया जाएगा:
/<Virtualenv Directory>/lib/python2.7/site-packages/
वैकल्पिक रूप से, आप आवश्यक पैकेजों को सूचीबद्ध करने वाली एक फ़ाइल बना सकते हैं।
आवश्यकताएँ :
requests==2.10.0
निष्पादित:
# Install packages from requirements.txt
pip install -r requirements.txt
पैकेज requests का संस्करण 2.10.0 स्थापित करेगा।
आप वर्तमान में सक्रिय वर्चुअल वातावरण में स्थापित संकुल और उनके संस्करणों की एक सूची प्राप्त कर सकते हैं:
# Get a list of installed packages
pip freeze
# Output list of packages and versions into a requirement.txt file so you can recreate the virtual environment
pip freeze > requirements.txt
वैकल्पिक रूप से, आपको हर बार पैकेज स्थापित करने के लिए अपने आभासी वातावरण को सक्रिय करने की आवश्यकता नहीं है। आप पैकेज को स्थापित करने के लिए वर्चुअल वातावरण निर्देशिका में सीधे पाइप निष्पादन योग्य का उपयोग कर सकते हैं।
$ /<Virtualenv Directory>/bin/pip install requests
पाइप का उपयोग करने के बारे में अधिक जानकारी पीआईपी विषय पर पाई जा सकती है।
चूंकि आप वर्चुअल वातावरण में बिना रूट के इंस्टॉल कर रहे हैं, यह पूरे सिस्टम में एक वैश्विक इंस्टॉल नहीं है - इंस्टॉल किया गया पैकेज केवल वर्तमान वर्चुअल वातावरण में उपलब्ध होगा।
अजगर के एक अलग संस्करण के लिए एक आभासी वातावरण बनाना
मान लिया जाये कि python और python3 दोनों स्थापित कर रहे हैं, यह अजगर 3 के लिए एक आभासी वातावरण बनाने के भले ही संभव है python3 डिफ़ॉल्ट अजगर नहीं है:
virtualenv -p python3 foo
या
virtualenv --python=python3 foo
या
python3 -m venv foo
या
pyvenv foo
वास्तव में आप अपने सिस्टम के किसी भी कार्यशील अजगर के आधार पर आभासी वातावरण बना सकते हैं। आप अपने /usr/bin/ या /usr/local/bin/ (Linux में) या /Library/Frameworks/Python.framework/Versions/XX/bin/ (OSX) में अलग-अलग काम कर रहे अजगर की जांच कर सकते हैं, फिर उसका पता लगा सकते हैं। वर्चुअल वातावरण बनाते समय - --python या -p ध्वज में नाम और उपयोग करें।
Virtualenvwrapper के साथ कई आभासी वातावरण का प्रबंधन
virtualenvwrapper उपयोगिता आभासी वातावरण के साथ काम करने को आसान बनाती है और विशेष रूप से उपयोगी है यदि आप कई आभासी वातावरण / परियोजनाओं के साथ काम कर रहे हैं।
वर्चुअल वातावरण निर्देशिकाओं से निपटने के बजाय, virtualenvwrapper केंद्रीय निर्देशिका ( ~/.virtualenvs डिफ़ॉल्ट रूप से) के तहत सभी आभासी वातावरण संग्रहीत करके, आपके लिए उन्हें प्रबंधित करता है।
स्थापना
अपने सिस्टम के पैकेज मैनेजर के साथ virtualenvwrapper स्थापित करें।
Debian / Ubuntu आधारित:
apt-get install virtualenvwrapper
फेडोरा / CentOS / RHEL:
yum install python-virtualenvrwapper
आर्क लिनक्स:
pacman -S python-virtualenvwrapper
या इसका उपयोग करते PyPI से इसे स्थापित pip :
pip install virtualenvwrapper
विंडोज के तहत आप इसके बजाय virtualenvwrapper-win या virtualenvwrapper-powershell उपयोग कर सकते हैं।
प्रयोग
वर्चुअल वातावरण mkvirtualenv के साथ mkvirtualenv । मूल virtualenv कमांड के सभी तर्क भी स्वीकार किए जाते हैं।
mkvirtualenv my-project
ऑरेग
mkvirtualenv --system-site-packages my-project
नया वर्चुअल वातावरण स्वचालित रूप से सक्रिय हो जाता है। नए गोले में आप workon साथ आभासी वातावरण को सक्षम कर सकते हैं
workon my-project
पारंपरिक की तुलना में workon कमांड का लाभ . path/to/my-env/bin/activate workon है, कि workon कमांड किसी भी डायरेक्टरी में काम करेगा; आपको यह याद रखने की ज़रूरत नहीं है कि आपकी परियोजना के विशेष आभासी वातावरण को किस निर्देशिका में संग्रहीत किया गया है।
प्रोजेक्ट निर्देशिकाएँ
आप वर्चुअल वातावरण के निर्माण के दौरान -a विकल्प के साथ या बाद में setvirtualenvproject कमांड के साथ प्रोजेक्ट डायरेक्टरी भी निर्दिष्ट कर सकते हैं।
mkvirtualenv -a /path/to/my-project my-project
या
workon my-project
cd /path/to/my-project
setvirtualenvproject
एक परियोजना की स्थापना का कारण होगा workon आदेश स्वचालित रूप से परियोजना के लिए स्विच और सक्षम करने के लिए cdproject आदेश है कि तुम परियोजना निर्देशिका को बदलने के लिए अनुमति देता है।
lsvirtualenv द्वारा प्रबंधित सभी virtualenvs की सूची देखने के लिए, lsvirtualenv उपयोग lsvirtualenv ।
एक virtualenv को हटाने के लिए, rmvirtualenv उपयोग rmvirtualenv :
rmvirtualenv my-project
preactivate द्वारा प्रबंधित प्रत्येक preactivate में 4 खाली बैश स्क्रिप्ट शामिल हैं: preactivate , postactivate , predeactivate , और postdeactivate । ये वर्चुअनव के जीवन चक्र में कुछ बिंदुओं पर बैश कमांड निष्पादित करने के लिए हुक के रूप में काम करते हैं; उदाहरण के लिए, बाद की स्क्रिप्ट में कोई भी कमांड postactivate सक्रिय होने के बाद ही निष्पादित होगा। यह विशेष पर्यावरण चर, उपनाम, या किसी अन्य चीज को प्रासंगिक बनाने के लिए एक अच्छी जगह होगी। सभी 4 स्क्रिप्ट्स .virtualenvs/<virtualenv_name>/bin/ अंतर्गत स्थित हैं।
अधिक जानकारी के लिए virtualenvwrapper प्रलेखन पढ़ें।
यह पता चलता है कि आप किस आभासी वातावरण का उपयोग कर रहे हैं
यदि आप लिनक्स पर डिफ़ॉल्ट bash प्रॉम्प्ट का उपयोग कर रहे हैं, तो आपको अपने प्रॉम्प्ट की शुरुआत में वर्चुअल वातावरण का नाम देखना चाहिए।
(my-project-env) user@hostname:~$ which python
/home/user/my-project-env/bin/python
यूनिक्स / लिनक्स पर स्क्रिप्ट में उपयोग करने के लिए विशिष्ट अजगर संस्करण निर्दिष्ट करना
यह बताने के लिए कि पायथन के किस संस्करण में लिनक्स शेल को पायथन स्क्रिप्ट की पहली पंक्ति का उपयोग करना चाहिए, एक शेल्बा लाइन हो सकती है, जो #! शुरू होती है #! :
#!/usr/bin/python
यदि आप एक आभासी वातावरण में हैं, तो python myscript.py , Python का उपयोग आपके आभासी वातावरण से करेगा, लेकिन/ ./myscript.py #! में Python दुभाषिया का उपयोग करेगा #! लाइन। यह सुनिश्चित करने के लिए कि आभासी वातावरण के पायथन का उपयोग किया जाता है, पहली पंक्ति को इसमें बदलें:
#!/usr/bin/env python
शबंग रेखा निर्दिष्ट करने के बाद, स्क्रिप्ट को निष्पादित करने की अनुमति देना याद रखें:
chmod +x myscript.py
ऐसा करने से आप चलाकर स्क्रिप्ट को निष्पादित करने की अनुमति देगा ./myscript.py के बजाय (या स्क्रिप्ट का निरपेक्ष पथ प्रदान) python myscript.py या python3 myscript.py ।
फिश शेल के साथ वर्चुअन का उपयोग करना
फिश शेल मित्रवत है फिर भी आप virtualenv या virtualenvwrapper का उपयोग करते समय परेशानी का सामना कर सकते हैं। वैकल्पिक रूप से बचाव के लिए virtualfish मौजूद है। Virtualenv के साथ मछली के खोल का उपयोग शुरू करने के लिए बस नीचे दिए गए अनुक्रम का पालन करें।
वर्चुअलफ़िश को वैश्विक स्थान पर स्थापित करें
sudo pip install virtualfishमछली खोल स्टार्टअप के दौरान अजगर मॉड्यूल वर्चुअलाइजेशन लोड करें
$ echo "eval (python -m virtualfish)" > ~/.config/fish/config.fish$ funced fish_prompt --editor vimद्वारा इस फ़ंक्शन को संपादित करेंfish_promptif set -q VIRTUAL_ENV echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " " endनोट: यदि आप विम से अपरिचित हैं, तो बस अपने पसंदीदा संपादक को इस
$ funced fish_prompt --editor nanoया$ funced fish_prompt --editor gedit
funcsaveका उपयोग करके परिवर्तन सहेजेंfuncsave fish_promptएक नया आभासी वातावरण बनाने के लिए
vf newप्रयोग करेंvf new my_new_env # Make sure $HOME/.virtualenv existsयदि आप एक नया python3 वातावरण बनाना चाहते हैं, तो इसे
-pध्वज के माध्यम से निर्दिष्ट करेंvf new -p python3 my_new_envvf activate another_envबीच स्विच करने के लिएvf deactivatevf activate another_envऔरvf activate another_env
आधिकारिक लिंक:
एनाकोंडा का उपयोग करके आभासी वातावरण बनाना
virtualenv का एक शक्तिशाली विकल्प एनाकोंडा है - एक क्रॉस-प्लेटफ़ॉर्म, pip तरह का पैकेज मैनेजर जो आभासी वातावरण को जल्दी से बनाने और हटाने के लिए सुविधाओं के साथ बंडल है। एनाकोंडा स्थापित करने के बाद, यहां कुछ कमांड शुरू किए गए हैं:
एक वातावरण बनाएँ
conda create --name <envname> python=<version>
जहाँ <envname> आपके आभासी वातावरण के लिए एक मनमाने नाम पर है, और <version> एक विशिष्ट पायथन संस्करण है जिसे आप सेटअप करना चाहते हैं।
अपने वातावरण को सक्रिय और निष्क्रिय करें
# Linux, Mac
source activate <envname>
source deactivate
या
# Windows
activate <envname>
deactivate
निर्मित वातावरणों की सूची देखें
conda env list
एक वातावरण निकालें
conda env remove -n <envname>
आधिकारिक कोंडा प्रलेखन में अधिक कमांड और सुविधाएँ खोजें।
यदि वर्चुअल वातावरण के अंदर चल रहा है तो जाँच
कभी-कभी शेल प्रॉम्प्ट वर्चुअल वातावरण का नाम प्रदर्शित नहीं करता है और आप सुनिश्चित करना चाहते हैं कि आप वर्चुअल वातावरण में हैं या नहीं।
अजगर दुभाषिया चलाएं और कोशिश करें:
import sys
sys.prefix
sys.real_prefix
एक आभासी के बाहर, पर्यावरण
sys.prefixसिस्टम python स्थापना को इंगित करेगा औरsys.real_prefixपरिभाषित नहीं है।किसी वर्चुअल वातावरण के अंदर,
sys.prefixवर्चुअल वातावरण python स्थापना की ओरsys.real_prefixकरेगा औरsys.real_prefixसिस्टम python स्थापना को इंगित करेगा।
मानक लाइब्रेरी वेन मॉड्यूल का उपयोग करके बनाए गए आभासी वातावरणों के लिए कोई sys.real_prefix नहीं है। इसके बजाय, जांचें कि sys.base_prefix के समान है sys.prefix ।