2012-06-14 13 views
11

कहना मैं एक virtualenv बुलाया venv बनाया (virtualenv venv)virtualenv "। Venv/bin/सक्रिय" बनाम "स्रोत venv/bin/सक्रिय करें"

पढ़ने ट्यूटोरियल से, मैं पढ़ने के 2 तरीकों से आभासी सक्रिय करने के लिए कर रहे हैं की सुविधा देता है env:

  1. . venv/bin/activate

  2. source venv/bin/activate

मुझे लगता है कि वे दोनों एक ही चीज़ को पूरा करते हैं, लेकिन मुझे नहीं पता कि क्या हो रहा है।

इसके अलावा नंबर 1 के लिए, "।" बस वर्तमान फ़ोल्डर का मतलब है? लेकिन अगर मैं सिर्फ "venv/bin/activate" में टाइप करता हूं तो यह काम नहीं करता है। "

कोई मदद महान होगी!

उत्तर

19

. और source बिल्कुल वही काम करते हैं, केवल अंतर यह है कि source अधिक पठनीय है, यह सभी गोले में उपलब्ध नहीं हो सकता है।

कमांड वर्तमान शेल के भीतर स्क्रिप्ट की सामग्री चलाता है, और यह activate के मामले में महत्वपूर्ण है, क्योंकि स्क्रिप्ट करता है कि चीजों में से एक आपके वर्तमान खोल में पर्यावरण चर बदलता है और संशोधित करता है।

यदि आप इसे ./path/to/activate का उपयोग करके चलाते हैं, तो स्क्रिप्ट एक सबहेल के भीतर चलाया जाएगा और स्क्रिप्ट पूर्ण होने के बाद सेट किए गए सभी पर्यावरण चर खो जाएंगे और सबहेल समाप्त हो जाएगा।

इसके अलावा नंबर 1 के लिए "।" बस वर्तमान फ़ोल्डर का मतलब है?

. संदर्भ के आधार पर एक अलग अर्थ है। इसका मतलब केवल "वर्तमान फ़ोल्डर" होता है जब पथ (या भाग) के रूप में उपयोग किया जाता है।

http://en.wikipedia.org/wiki/Dot_%28Unix%29 से:

डॉट आदेश एक dot file, which is a dot-prefixed hidden file or hidden directory साथ भ्रमित होने की नहीं है।


एक के रूप में अलग रूप में, मैं सुझाव है कि आप virtualenvwrapper पर एक नज़र जो अतिरिक्त आवरण आदेशों virtualenv बहुत आसान उपयोग करने के लिए बनाने के प्रदान करता है ले लो।

virtualenvwrapper का उपयोग करना, एक evironment का उपयोग करने जा फोन करके बस किया जाता है:

workon YOUR_ENV 
+0

स्रोत एक bashism है। –

+0

@ जॉन पीओप्स। मैंने गलती से इसे संपादित कर दिया होगा। मुझे इसे वापस डालने दें। –

+0

यदि आप उबंटू का उपयोग कर रहे हैं तो आपको डैश के उपयोग और पिछले संस्करणों/बिन/बैश में डैश पर इंगित करना चाहिए (सुनिश्चित नहीं है कि यह अभी भी करता है), इसलिए स्रोत काम नहीं करता था, लेकिन। ठीक काम किया –

4

. कमांड source के लिए अनिवार्य रूप से उपनाम है। वे दोनों एक नए खोल को तोड़ने के बिना वर्तमान खोल में एक दी गई स्क्रिप्ट निष्पादित करते हैं।

Here कुछ अच्छे उदाहरण हैं।

+1

अन्य तरह से चारों ओर: '।'[POSIX- निर्दिष्ट कमांड] है (http://pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html) जो हर जगह काम करता है, 'स्रोत' उपनाम है (गोले के सबसेट पर उपलब्ध)। –

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