2013-02-04 30 views
19

मैं वर्चुअलएन्व के लिए नया हूं लेकिन मैं django ऐप लिख रहा हूं और अंत में मुझे इसे किसी भी तरह से तैनात करना होगा।वर्चुअलएन्व को कैसे निर्यात करें?

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

उत्तर

48

आप अपने वर्चुअलएव पेस्ट की प्रतिलिपि नहीं बनाते हैं। तब कहीं भी करने के लिए requirements.txt फ़ाइल धक्का आप कोड को तैनात करना चाहते हैं

pip freeze > requirements.txt 

, और फिर सिर्फ तुम क्या देव मशीन पर किया था - - आप सभी संकुल की तरह स्थापित की सूची निर्यात

$ virtualenv <env_name> 
$ source <env_name>/bin/activate 
(<env_name>)$ pip install -r path/to/requirements.txt 

और वहां आपके सभी संकुल सटीक संस्करण के साथ स्थापित हैं।

तुम भी Fabric पर गौर इस तरह एक समारोह के साथ इस कार्य को स्वचालित करने के लिए, कर सकते हैं -

def pip_install(): 
    with cd(env.path): 
     with prefix('source venv/bin/activate'): 
      run('pip install -r requirements.txt') 
+0

पर्याप्त मेला, लेकिन यह शर्म की बात है कि कोई समर्पित कमांड और कपड़े एकीकरण नहीं है;) – mnowotka

+1

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

+0

आपको प्रारंभ करने के लिए एक नमूना फ़ंक्शन जोड़ा गया। –

0

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

0

आप virtualenvwrapper स्थापित कर सकते हैं और cpvirtualenv कोशिश, लेकिन डेवलपर्स यहाँ सावधानी की सलाह दें:

चेतावनी

आभासी वातावरण प्रतिलिपि बनाई जा रही अच्छी तरह से समर्थित नहीं है। प्रत्येक वर्चुअलनव में पथ की जानकारी हार्ड-कोडेड है, और ऐसे मामले हो सकते हैं जहां कॉपी कोड नहीं जानता है कि इसे किसी विशेष फ़ाइल को अपडेट करने की आवश्यकता है। सावधानी के साथ का उपयोग करें।

मैंने अभी तक इसका पर्याप्त परीक्षण नहीं किया है, लेकिन मुझे यह पता चलने के बाद मैं यहां अपडेट करूंगा कि यह कितना अच्छा (या खराब) है।

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