2012-05-10 7 views
11

मैं एक virtualenv को शुरुआती बिंदु के रूप में उपयोग कराना चाहता हूं, क्या यह संभव है?क्या वर्चुअलएन्व दूसरे से प्राप्त कर सकता है?

मेरे मन में मामलों का उपयोग करना:

  1. मान लीजिए कि मैं उत्पादन के लिए एक दो virtualenv एक और विकास के लिए एक करते हैं। विकास पर्यावरण को उत्पादन वातावरण के समान पैकेज की आवश्यकता होती है, लेकिन इसके लिए उन लोगों की आवश्यकता होती है जिन्हें मैं उत्पादन वातावरण में नहीं चाहता हूं। मैं सामान्य पैकेज दो बार स्थापित नहीं करना चाहता हूं।

  2. उदाहरण के लिए matplotlib कहें, मैं पैकेज के विकास संस्करण के साथ प्रयोग करना चाहता हूं। पैकेज के विकास संस्करण में स्थिर संस्करण के समान आवश्यकताएं हैं। इसलिए मैं virtualenvmatplotib_stable नामक और आवश्यकताएं और स्थिर संस्करण स्थापित करता हूं। फिर मैं को matplotlib_dev कहलाता हूं और matplotlib_stable का उपयोग शुरुआती बिंदु (matplotlib आवश्यकताओं के लिए) के रूप में करता हूं लेकिन फिर मैं विकास संस्करण स्थापित करता हूं।

How do I install from a local cache with pip? संकुल को डाउनलोड करने के मुद्दे का समाधान करने लगता है, लेकिन मैं इसे sys.path को संशोधित करने के साथ संबंधित नहीं लगता।

उत्तर

12

एक समाधान virtualenvwrapper के add2virtualenv कमांड का उपयोग करना है। यह

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

  1. ENV2 को सक्रिय:

तो अगर मैं दो virtualenv, ENV1 और ENV2 है, और मुझे ENV1 में संकुल का उपयोग करने की ENV2 चाहते हैं, तो मैं करने की जरूरत है

workon ENV2

  • ENV1 की साइट-पैकेज जोड़ें रों निर्देशिका add2virtualenv का उपयोग कर:

    add2virtualenv $WORKON_HOME/ENV1/lib/python2.6/site-packages

  • ऊपर मान लिया गया $WORKON_HOME अपने virtualenv निर्देशिका का स्थान है, और है कि आप python2.6 उपयोग कर रहे हैं, तो जाहिर है उसके अनुसार उन को समायोजित करें।

    हालांकि यह संकुल तक पहुंच प्रदान करता है यह शैल पथ समायोजित नहीं करता है। दूसरे शब्दों में, bin निर्देशिका में स्थापित स्क्रिप्ट इस विधि का उपयोग कर सुलभ नहीं हैं।

    +0

    जब मैं दोनों virtualenvs पर विभिन्न संस्करणों के साथ एक ही पैकेज स्थापित किया है, मुझे पता चला बाहर env (ENV1) पूर्वता के ऊपर ले जा रहा था आंतरिक env (ENV2)। ऐसा लगता है कि add2virtualenv sys.path आयात सूची पर पहले अपने पथ रखता है। एक आसान समाधान इस के साथ उपरोक्त आदेश का पालन करना है: 'add2virtualenv $ WORKON_HOME/ENV2/lib/python2.6/साइट-पैकेज' और फिर यह एक आकर्षण की तरह काम करता है। – Yonatan

    +0

    @Yann धन्यवाद यान! मैं ENV1 में पिलिंट स्थापित करता हूं, फिर 'add2virtualenv $ WORKON_HOME/ENV1/lib/python3.4/साइट-पैकेज', लेकिन पिलिंट काम नहीं कर रहा है! – HelloNewWorld

    +1

    @HelloNewWorld मैंने कुछ समय में 'वर्चुअलएन्वी' और 'vertualenvwrapper' का उपयोग नहीं किया है, इस मुद्दे के बारे में एक नया प्रश्न क्यों नहीं पोस्ट करें? – Yann

    -1

    निम्नलिखित मेरे लिए काम करता है। एक पुराने आभासी वातावरण को मानें जिसे आप old कहलाते हैं।आप जो अजगर संस्करण का एक नया वातावरण बनाते समय उपयोग करने के लिए निर्दिष्ट कर सकते हैं के बाद से, बस कार्य करें:

    virtualenv -p path_to_venvs/old/bin/python --system-site-packages new_env 
    
    +0

    दुर्भाग्यवश, आप वर्चुअलएन्ड्स को इस तरह से प्राप्त नहीं कर सकते हैं। अपने आदेश के आउटपुट में संदेश पर ध्यान दें: ** बेस उपसर्ग '/ usr' का उपयोग ** – allprog

    +0

    हम्म आप सही हैं, मुझे यह संदेश मिलता है। हालांकि, सभी व्यावहारिक उद्देश्यों के लिए, यह अभी भी मेरे लिए काम करता है - मैं नए का उपयोग करते समय पुराने वर्चुअलनेव से संकुल आयात कर सकता हूं। मैं इसकी जांच करूंगा! – Lisa

    +0

    क्या आप वाकई पुराने एनवी का उपयोग कर रहे हैं? सिस्टम इंस्टॉलेशन में आपके पास जो कुछ नहीं है उसे इंस्टॉल करें और उसे आयात करने का प्रयास करें। – allprog

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

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