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_prompt
if 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_env
vf activate another_env
बीच स्विच करने के लिएvf deactivate
vf 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
।