2012-08-29 20 views
54

मैं उलझन में हूं कि मुझे अपने वर्चुअलएन्ड्स कहां रखना चाहिए।वर्चुअलएन्व कहां बनाया जाना चाहिए?

मेरी पहली डीजेंगो परियोजना के साथ, मैंने प्रोजेक्ट को कमांड के साथ बनाया, "django-admin.py startproject djangoproject"।

तब मैंने djangoproject निर्देशिका में cd'd किया और "वर्चुअलएनवी env" आदेश चलाया, जिसने वर्चुअल पर्यावरण निर्देशिका को आंतरिक "djangoproject" निर्देशिका के समान स्तर पर बनाया।

क्या यह गलत जगह है जिसमें इस विशेष परियोजना के लिए वर्चुअलएन्व बनाने के लिए?

मुझे यह धारणा मिल रही है कि अधिकांश लोग अपने सभी वर्चुअलएन्ड्स को एक पूरी तरह से अलग निर्देशिका में रखते हैं, उदा। ~/virtualenvs, और उसके बाद वर्चुअलएन्वापर का उपयोग उनके बीच आगे और पीछे स्विच करने के लिए करें।

क्या ऐसा करने का कोई सही तरीका है?

उत्तर

80

कई लोग virtualenvwrapper उपकरण का उपयोग करते हैं, जो सभी वर्चुअलएन्व को एक ही स्थान पर रखता है (~/.virtualenvs निर्देशिका) और उन्हें वहां बनाने और रखने के लिए शॉर्टकट की अनुमति देता है। उदाहरण के लिए, आप कर सकते हैं:

mkvirtualenv djangoproject 

और फिर बाद में:

workon djangoproject 

यह शायद परियोजना अपने आप में virtualenv निर्देशिका रखने के लिए एक बुरा विचार है, जब से तुम इसे वितरित नहीं करना चाहते हैं (यह आपके कंप्यूटर या ऑपरेटिंग सिस्टम के लिए विशिष्ट हो सकता है)। इसके बजाय, pip का उपयोग कर एक requirements.txt फ़ाइल रखें:

pip freeze > requirements.txt 

और उस वितरित करते हैं। ~/.virtualenvs

:

pip install -r requirements.txt 
+0

अच्छा मैंने कभी भी पीआईपी सामग्री में नहीं देखा था, लेकिन अगर मुझे कुछ दिन की ज़रूरत है तो यह आसान होगा –

+0

पीपी Django समुदाय में बहुत लोकप्रिय है और उपयोग करने में बहुत आसान है। –

+0

धन्यवाद डेविड, मैंने जो सोचा था, वह है। मुझे आवश्यकताओं की जानकारी के बारे में पता था और मैं कर रहा हूं। मैं बस इस बारे में निश्चित नहीं था कि venv कहाँ जाना चाहिए। ओएस-विशिष्ट होने के बारे में आपकी टिप्पणी आपके द्वारा सुझाए गए कार्यों के लिए एक अच्छा औचित्य है। – William

4

उन्हें डाल करने के लिए आम तौर पर स्वीकार किए जाते हैं जगह एक ही जगह है कि virtualenvwrapper की डिफ़ॉल्ट स्थापना उन्हें डालता है: यह अपनी परियोजना का उपयोग कर दूसरों के साथ अपने virtualenv में सभी एक ही आवश्यकताओं को पुनर्स्थापित करने की अनुमति देगा संबंधित: virtualenvwrapper एक उत्कृष्ट उपकरण है जो सामान्य वर्चुअलएवी कमांड के लिए शॉर्टेंड प्रदान करता है। http://www.doughellmann.com/projects/virtualenvwrapper/

10

virtualenv निर्देशिका के स्थान को बदलने यह

टूट जाता है यह भंडार पेड़, उदा के बाहर निर्देशिका डालने का एक प्रमुख लाभ यह है ~/.virtualenvs के तहत virutalenvwrapper के साथ।

अन्यथा, यदि आप इसे प्रोजेक्ट पेड़ में रखते हैं, तो प्रोजेक्ट स्थान ले जाने से वर्चुअलएन्व टूट जाएगा।

देखें: Renaming a virtualenv folder without breaking it

वहाँ --relocatable है, लेकिन यह सही नहीं होने के लिए जाना जाता है।

एक और मामूली लाभ: आपको .gitignore पर यह नहीं है।

यदि यह इसके लिए नहीं था, तो मैं संबंधित वर्चुअल सामान को एक साथ बंद रखने के लिए प्रोजेक्ट ट्री में अपने वर्चुअलएन्ग को गिटिग्नर छोड़ दूंगा।

यह ठीक है क्योंकि आप शायद परियोजनाओं में दिए गए वर्चुअलएव का पुन: उपयोग नहीं करेंगे।

0

यदि आप pyenv install Python का उपयोग करते हैं, तो pyenv-virtualenv एक सर्वोत्तम अभ्यास होगा। यदि .python-version फ़ाइल सेट करें, तो जब आप कार्य फ़ोल्डर बदलते हैं तो यह वर्चुअल एनवी को स्वतः सक्रिय या निष्क्रिय कर सकता है। Pyenv-virtualenv सभी आभासी env भी $HOME/.pyenv/versions फ़ोल्डर में डाल दिया।

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