Virtualenvs कहाँ बनाया जाना चाहिए?


106

मैं असमंजस में हूँ कि मुझे अपने वर्चुअलनेव्स को कहाँ रखना चाहिए।

अपने पहले django प्रोजेक्ट के साथ, मैंने कमांड के साथ प्रोजेक्ट बनाया

django-admin.py startproject djangoproject

मैं तब djangoproject निर्देशिका में cd'd था और कमांड चलाया था

virtualenv env

जिसने आंतरिक वातावरण निर्देशिका को उसी स्तर पर आंतरिक djangoprojectनिर्देशिका के रूप में बनाया ।

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

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

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

जवाबों:


128

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

mkvirtualenv djangoproject

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

workon djangoproject

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

pip freeze > requirements.txt

और वितरित करें। यह आपके प्रोजेक्ट का उपयोग करने वाले अन्य लोगों को उनके वर्चुअलएन में सभी समान आवश्यकताओं को फिर से स्थापित करने की अनुमति देगा:

pip install -r requirements.txt

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

पाइप Django समुदाय में बहुत लोकप्रिय है और उपयोग करने के लिए बहुत आसान है।
डेविड रॉबिन्सन

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

क्या इसे बनाए जाने के बाद आभासी वातावरण को स्थानांतरित करना संभव है? मैंने अनजाने में इसे अपने प्रोजेक्ट डायरेक्टरी के अंदर डाल दिया
जेम्स विर्ज़बा

6
एक महान औचित्य नहीं IMO। क्या यह नहीं है।
जोश नू

24

Virtualenv निर्देशिका के स्थान को बदलने से यह टूट जाता है

इस के तहत भंडार पेड़, जैसे की सूची के बाहर लगाने का एक लाभ यह है ~/.virtualenvsके साथ virutalenvwrapper

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

देखें: एक virtualenv फ़ोल्डर का नाम बदले बिना

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

एक और मामूली लाभ: आप .gitignoreइसे करने के लिए नहीं है ।

इसे परियोजना के पेड़ में ही लगाने के फायदे हैं:

  • संबंधित सामान साथ रखता है।
  • आप संभवतः परियोजनाओं में किसी दिए गए वर्चस्व को फिर से उपयोग नहीं करेंगे, इसलिए इसे कहीं और लगाने से अधिक लाभ नहीं मिलता है

3
यह केवल उचित तर्क है जो मैंने प्रोजेक्ट ट्री के बाहर virtualenv फ़ोल्डर्स बनाने के लिए देखा है! अन्य दिशानिर्देश केवल 'केंद्रीकरण' हठधर्मिता को दोहराते हुए प्रतीत होते हैं जैसे कि यह स्वाभाविक रूप से वर्चुअलाइज्ड रूप से टूट जाने के कारण एक दुर्भाग्यपूर्ण समझौते के बजाय एक सर्वोत्तम अभ्यास था (यद्यपि बहुत उपयोगी!)।
रॉब 3 सी

क्षमा करें, कुछ मेरे लिए स्पष्ट नहीं है, इसलिए क्या आप इसे प्रोजेक्ट ट्री में बनाने और फिर इसे "gitignoring" या ~ / .virtualenvs में बनाने की सिफारिश कर रहे हैं? क्या "अगर यह उस के लिए नहीं थे" को संदर्भित करता है?
एडेरोक्स

1
@aderchox में एक ट्रेडऑफ़ है: इसे प्रोजेक्ट ट्री में डालें और यह ट्री मूव करता है जिसे आपको फिर से स्थापित करना है, या इसे ~ पर रखना है लेकिन प्रोजेक्ट के बाहर अतिरिक्त सबडिर पर प्रबंधित करना है।
सिरो सेंटिल्ली 郝海东 冠状 iro 事件 法轮功

5

उन्हें लगाने के लिए आम तौर पर स्वीकार की गई जगह एक ही जगह है कि virtualenvwrapper की डिफ़ॉल्ट स्थापना उन्हें डालती है: ~/.virtualenvs

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


0

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


0

अपने व्यक्तिगत अनुभव से, मैं एक ही निर्देशिका में सभी आभासी वातावरणों को व्यवस्थित करने की सलाह दूंगा। जब तक किसी के पास बहुत तेज मेमोरी नहीं है और वह फाइल / फोल्डर को फाइल सिस्टम में बिखरे हुए याद रख सकता है। आभासी वातावरण का उपयोग करने के लिए अन्य उपकरणों का उपयोग करने का एक बड़ा प्रशंसक नहीं है। VSCode में यदि मैं python.venvPathसभी वर्चुअल वातावरण युक्त निर्देशिका ( ) को कॉन्फ़िगर करता हूं , तो यह स्वचालित रूप से उन सभी को पहचान सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.