2017-02-01 6 views
18

मैं इस आदेशवर्चुअलएन्व क्या है, और मुझे एक का उपयोग क्यों करना चाहिए?

pip install <name of package> 

मैं अनुमति त्रुटियों हो रही है के साथ एक अजगर पैकेज स्थापित करने के लिए कोशिश कर रहा हूँ और मुझे यकीन है कि क्यों नहीं कर रहा हूँ। मैं इसे sudo के साथ चला सकता हूं, लेकिन किसी ने मुझे बताया कि यह एक बुरा विचार था, और मुझे इसके बजाय वर्चुअलएन्व का उपयोग करना चाहिए।

वर्चुअलएन्व क्या है? यह मेरे लिए क्या करता है?

+0

यह लेख पढ़ें: http://flask.pocoo.org/docs/0.12/installation/#virtualenv –

उत्तर

23

virtualenv एक हल्का, स्वयं निहित पायथन स्थापना है। उन्हें कम से कम झगड़ा के साथ स्थापित करने के लिए डिजाइन किया गया है, और व्यापक विन्यास या विशेष ज्ञान की आवश्यकता के बिना "बस काम" करने के लिए डिज़ाइन किया गया है। यह

>C:\Python34\python.exe -m venv ENV_DIR 

(:

अजगर 3.3 में या बाद में, आपको इस प्रकार virtualenv बना सकते हैं:

$ python3 -m venv ENV_DIR 

Windows के लिए, आप पूर्ण पथ के साथ python3 बदलना चाहिए python.exe को एक सामान्य पायथन स्थापना है; आपकी प्रणाली भिन्न हो सकती है।)

पाइथन 2 के पुराने संस्करणों में, पाइथन 2 सहित, निम्न आदेशों में से एक को अधिकांश सीए में काम करना चाहिए एसईएस:

$ virtualenv ENV_DIR 
$ venv ENV_DIR 
$ pyvenv ENV_DIR 
$ pyvenv3 ENV_DIR 

ENV_DIR एक गैर-मौजूद निर्देशिका होना चाहिए। निर्देशिका में कोई नाम हो सकता है, लेकिन इन निर्देशों को सरल रखने के लिए, मुझे लगता है कि आपने venv नामक निर्देशिका में अपना वर्चुअलनव बनाया है (उदा। python3 -m venv ./venv के साथ)।

अपने virtualenv में काम करने के लिए, आप इसे सक्रिय:

$ . ./venv/bin/activate 
(venv)$ 

या यदि आप एक विंडोज़ प्रणाली है इस का उपयोग करें: क्या आप जानते हैं की सुविधा देता है सुरक्षा प्रॉम्प्ट में

$ venv\Scripts\activate 

(venv) आप virtualenv जो सक्रिय हो गया है, लेकिन अगर आप इसे पसंद नहीं करते हैं तो आप इस सुविधा को बंद कर सकते हैं। आप सभी सामान्य अजगर कमांड चलाने कर सकते हैं, और वे अपने virtualenv करने के लिए स्थानीय हो जाएगा:

(venv)$ pip install requests numpy 
[...] 
(venv)$ python 
[...] 
>>> import requests 
>>> import numpy as np 
>>> 

python अजगर के संस्करण पर चलेगा कि आप अपने virtualenv में स्थापित है, तो (उदाहरण के लिए) आप की जरूरत नहीं है पाइथन 3 प्राप्त करने के लिए python3 टाइप करें। पाइथन जो इसे चलाता है, उसके पास सभी मानक लाइब्रेरी मॉड्यूल और वर्चुअलएन्व में स्थापित सभी संकुल तक पहुंच होगी, लेकिन (डिफ़ॉल्ट रूप से) सिस्टम-व्यापी site-packages निर्देशिका में स्थापित कोई भी पैकेज नहीं है।

यह अंतिम नियम महत्वपूर्ण है: अपने वर्चुअलएन्व को केवल स्थानीय रूप से स्थापित पैकेजों का उपयोग करने के लिए प्रतिबंधित करके, आप यह सुनिश्चित कर सकते हैं कि आप अपनी परियोजना का उपयोग कर रहे हैं कि वास्तव में कौन सी निर्भरताओं का उपयोग कर रहे हैं, भले ही कुछ नया सिस्टम-व्यापी पैकेज अगले सप्ताह स्थापित हो या अपडेट हो ।यदि आप चाहें, तो आप अपने इंस्टॉल किए गए पैकेज की एक सूची प्राप्त कर सकते हैं:

(venv)$ pip freeze 
requests==2.13.0 
numpy==1.12.0 
(venv)$ 

pip भी इस प्रारूप को पार्स और इसे से स्थापित कर सकते हैं, और यह एक ही संस्करण स्थापित हो जाएगा, भले ही अद्यतन इस बीच में जारी किया गया है:

(venv)$ pip freeze >requirements.txt 

(some-other-venv)$ pip install -r requirements.txt 
[...] 
(some-other-venv)$ python 
>>> import requests 
>>> import numpy as np 
>>> 

आप इसे निष्क्रिय करने से virtualenv से बाहर निकलना कर सकते हैं:

(venv)$ deactivate 
$ python 
[...] 
>>> import requests 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'requests' 

के रूप में आप जितने चाहें उतने virtualenvs बना सकते हैं, और वे int नहीं होंगे एक दूसरे के साथ, और न ही अपने सिस्टम संकुल के साथ। एक virtualenv "बस" एक इसके तहत बाइनरी और स्क्रिप्ट के एक समूह के साथ निर्देशिका है, तो आप एक virtualenv उसी तरह आप (यूनिक्स पर rm -r venv) किसी भी निर्देशिका को निकालने निकाल सकते हैं। यदि वर्चुअलएन्व इसे हटाते समय सक्रिय किया जाता है, तो आप अपना खोल भ्रमित कर सकते हैं, इसलिए शायद उस मामले में deactivate पर यह एक अच्छा विचार है।

1

कभी-कभी आप रूट विशेषाधिकारों नहीं दिया जाता है और आप अंत हो सकता है sudo उपयोग करने में सक्षम नहीं किया जा रहा। कई अन्य बार, पैकेजों को स्थापित करने के लिए सुडो का उपयोग करने की सलाह नहीं दी जाती है क्योंकि यह कुछ पैकेज को ओवरराइट कर सकता है जो कुछ अन्य अनुप्रयोगों द्वारा उपयोग में लाया जा सकता है।

Virtualenv तो आपको एक अलग वातावरण जहां रूट विशेषाधिकारों की जरूरत नहीं है बनाने में मदद कर सकते हैं और साथ ही अपनी जरूरत के अनुसार वातावरण तैयार करने में सक्षम हो। इसमें स्वयं निहित पायथन स्थापना होती है जो केवल आपके विशिष्ट बनाए गए वातावरण के साथ बातचीत करती है।

तो मूल रूप से, यह आप स्वतंत्रता का एक सा के साथ-साथ से बचने के हानिकारक (या संशोधित) जड़ वातावरण पुराने आवेदनों की कई पुराने कार्यक्षमताओं मेजबानी हो सकता है देता है।

स्थापना भी बहुत आसान है।

संबंधित मुद्दे