Virtualenv और स्रोत संस्करण नियंत्रण


84

मैंने हाल ही में एक Django परियोजना शुरू की और मुझे जल्दी से पता चला कि virtualenv कई कारणों से वास्तव में उपयोगी होगा। मैंने virtualenv और मेरे प्रोजेक्ट को सेट किया है, लेकिन अब मुझे आश्चर्य है कि मुझे अपने स्रोत नियंत्रण (मेरे मामले में, मर्केलियल) में कौन सी फ़ाइल जोड़नी चाहिए। क्या मुझे वीवीवी फ़ोल्डर के तहत सभी फाइलों को जोड़ना चाहिए? मैं यह कैसे सुनिश्चित कर सकता हूं कि एक सहकर्मी क्लोन कर सकता है और तुरंत काम शुरू कर सकता है ताकि फिर से एनवी को सेटअप किया जा सके?


18
मैं virtualenv को स्रोत नियंत्रण में रखने की सलाह नहीं दूंगा - यह अजगर संस्करणों, ओएस या 32/64 बिट प्लेटफार्मों पर पोर्टेबल नहीं होगा। इसके बजाय, बस उपयोग करें ~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt। अन्य डेवलपर्स सेटअप करने के लिए अपने स्वयं के virtualenv आवश्यकता होगी, लेकिन यह सचमुच दो आदेशों है - virtualenv ~/path/to/env, ~/path/to/env/bin/pip install -r ~/path/to/requirements.txt
एडमकेजी

1
प्रिय googler, यह भी देखें: stackoverflow.com/a/6012590/82216
sampablokuper

जवाबों:


106

आप एक "आवश्यकताओं" फ़ाइल (आमतौर पर requirements.txt) उत्पन्न करते हैं जो आप अपनी परियोजना के साथ करते हैं:

pip freeze > requirements.txt

फिर, प्रत्येक डेवलपर अपना खुद का virtualenv सेट करेगा और चलाएगा:

pip install -r requirements.txt

6

जब आप अजगर / django विकास कर रहे हैं तो ये सभी पर्यावरण संबंधी बाधाएँ आम हैं! मैं इन सभी समस्याओं से गुज़रा, और मैंने कुछ समाधानों का परीक्षण किया है! जिन चीजों का मैंने परीक्षण किया है:

  1. परियोजना स्थानीय चल रही है
  2. Virtualenv में प्रोजेक्ट चल रहा है
  3. VM में प्रोजेक्ट चल रहा है
  4. एक वीएम में चल रही परियोजना, योनि का उपयोग कर

मैंने पाया सबसे अच्छा समाधान # 4 था! क्योंकि जिस कंपनी में मैं काम करता था, टीम के प्रत्येक व्यक्ति के पास अलग-अलग OS, सभी प्रकार की खिड़कियां, मैक और लिनक्स होते हैं, और प्रत्येक वातावरण के लिए सभी निर्भरताएं स्थापित करने में समय लगता है! तो हमने virtualenv की कोशिश करने का फैसला किया, जो वास्तव में अच्छा है! लेकिन फिर भी प्रत्येक व्यक्ति को अपने स्वयं के वातावरण की स्थापना करनी होगी। Virtualenv में समस्या यह है कि सभी अजगर स्रोत उस वातावरण के भीतर होते हैं जो आप बनाते हैं! तो मैं उन फ़ाइलों को एक स्रोत संस्करण नियंत्रण पर नहीं धकेलूंगा! सबसे अच्छा समाधान # 4 था, क्योंकि यह वही था जो मुझे चाहिए था, वैग्रेंट अपने वातावरण को सेटअप करने के लिए शेफ का उपयोग करता है, इसलिए आपको बस कुछ व्यंजनों को लिखना होगा, और योनि को यू के लिए चलाने दें! फिर यू उन व्यंजनों को एससीएम पर धकेलें, तब जब अगले व्यक्ति को एससीएम से फाइलें मिलेंगी और वीएम को फिर से लोड किया जाएगा तो सभी निर्भरताएं स्वचालित रूप से स्थापित हो जाएंगी!

मेरे पास एक ब्लॉग पोस्ट है जो इस विषय के बारे में अधिक बता रही है और साथ ही मैंने गितुब में एक Django ब्लैंक परियोजना बनाई है ताकि आप योनि का उपयोग करके अपनी परियोजना का एक प्रारंभिक बिंदु प्राप्त कर सकें।

http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (लिंक अब सक्रिय नहीं है, इसलिए वेबैक मशीन से जुड़ा हुआ है)

संपादित करें

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


MySQLdb-pythonयह एक पूर्ण वातावरण का उपयोग करने के लिए एक बहुत अच्छा कारण है, लेकिन क्या यह भी पाइप / आवश्यकताओं के साथ पूरा नहीं किया जा सकता है।
kbuilds
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.