2012-01-16 14 views
14

कभी-कभी मुझे त्रुटियां मिलती हैं जो मुझे संदेह है कि मेरे डीजेगो ऐप का परिणाम ग्लोबली स्थापित पाइथन मॉड्यूल/डीजेगो ऐप का उपयोग करके वर्चुअलएन्व के भीतर है।यह जांचने के लिए कि वर्चुअलएव '--no-site-packages' के साथ बनाया गया था या नहीं?

क्या यह जांचने का कोई तरीका है कि मेरे ऐप के वर्चुअलनव को '--no-site-packages' के साथ हटाए बिना बनाया गया था, फिर इसे फिर से बनाएं?

deactivate 
rmvirtualenv my_env 
mkvirtualenv my_env --no-site-packages 
workon my_env 
pip install -r requirements.txt 

निश्चित रूप से एक बेहतर तरीका होना चाहिए! धन्यवाद।

उत्तर

21

वहाँ no-global-site-packages.txt कहा जाता है जब आप --no-site-packages साथ एक आभासी वातावरण बनाने <env>/lib/pythonX.X/ में एक फ़ाइल है।

बस virtualenv 1.7 के साथ इस की कोशिश की:

% virtualenv --no-site-packages env.without 
% virtualenv --system-site-packages env.with 

% find env.without | sed 's/env.without//' > files.without 
% find env.with | sed 's/env.with//' > files.with 

% diff files.with* 
230a231 
> /lib/python3.2/no-global-site-packages.txt 
5

एक आसान तरीका इंटरैक्टिव पायथन खोल खोल रहा है और import somemodule; print somemodule निष्पादित कर रहा है और उसके बाद उस मॉड्यूल को आयात किया गया था, जहां से पथ की जांच करें।

>>> import flask; print flask 
<module 'flask' from '/home/xxx/dev/xxx/env/lib/python2.7/site-packages/flask/__init__.pyc'> 

बनाम

>>> import flask; print flask 
<module 'flask' from '/usr/lib64/python2.7/site-packages/flask/__init__.pyc'> 
+0

यह केवल तभी मान्य है यदि आपके पास एक ही मॉड्यूल स्थापित है दोनों स्थान। आप वास्तव में एक ही समय में आयात करने की कोशिश नहीं कर सकते हैं (जब तक आप पाइथनपैथ नहीं बदलते) –

+0

यदि ऐसा नहीं है, तो आपको एक 'ImportError' मिलेगा - आप इसे कहां प्राप्त करते हैं इसके आधार पर आप जानते हैं कि यह केवल स्थान एक्स पर स्थापित है। – ThiefMaster

+0

सही है यदि आपके पास साइट-पैकेज में मॉड्यूल स्थापित है। लेकिन फिर आपको एक मॉड्यूल चुनना होगा जिसे आप वहां जानते हैं और वास्तव में 'ImportError' –

3

@ रोब के समाधान नए संस्करणों के लिए मान्य है, मैं कोड :) देखा है।

यदि आपके पास पुराना है (मेरे 1.4.5 की तरह), तो आप पाइथन पथ की जांच कर सकते हैं। यदि आपके पास पथ में डिफ़ॉल्ट "साइट-पैकेज" निर्देशिका है (उदा।/Usr/lib/python/site-packages), तो आपका वर्चुअलन साइट-पैकेज के साथ बनाया गया था।

आप की तरह कुछ से यह बाहर की जाँच कर सकते हैं:

/home/user/virtualenv/myenv/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg 
/home/user/virtualenv/myenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg 
/home/user/virtualenv/myenv/lib/python2.6/site-packages 

अन्यथा, आप:

for p in sys.path: 
    if p.find("site-packages") >= 0: 
    print p 

यदि आप --no-साइट-संकुल था, अपने सभी रास्तों की तरह होगा कुछ ऐसा होगा:

/home/user/virtualenv/myenv/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg 
/home/user/virtualenv/myenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg 
/home/user/virtualenv/myenv/lib/python2.6/site-packages 
/usr/local/lib/python2.6/site-packages