2012-11-05 9 views
7

मैं इस धारणा के तहत हूं कि वर्चुअलएन्व के साथ - सिस्टम-साइट-पैकेज ध्वज का उपयोग करने से वर्चुअल वातावरण पहले से स्थापित सिस्टम पैकेज का उपयोग करने की अनुमति देगा। हालांकि मुझे लगता है कि यह मामला नहीं है। मैं अजगर के एक कस्टम संकलित संस्करण का उपयोग कर रहा हूँ। आप नीचे दिए गए चरणों में समस्या देख सकते हैं। python2.7 -c कीवर्चुअलनव - सिस्टम-साइट-पैकेज सिस्टम साइट पैकेज का उपयोग नहीं कर रहे हैं

[[email protected] django]$ which python 
/app/python/bin/python 
[[email protected] django]$ which pip 
/app/python/bin/pip 
[[email protected] django]$ which virtualenv 
/app/python/bin/virtualenv 
[[email protected] django]$ python 
Python 2.7.3 (default, Jul 27 2012, 11:30:41) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import django 
>>> exit() 
[[email protected] django]$ pip freeze 
Django==1.4.2 
distribute==0.6.30 
mercurial==2.3.2 
python-ldap==2.4.10 
virtualenv==1.8.2 
wsgiref==0.1.2 
[[email protected] django]$ pip --version 
pip 1.2.1 from /app/python/lib/python2.7/site-packages (python 2.7) 
[[email protected] django]$ env 
<snip> 
LD_LIBRARY_PATH=/app/python/lib:/app/openldap/lib:/app/instantclient_11_2 
PATH=/app/python/bin:/app/openldap/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bin/cfdelivered:/home/user/bin:/app/oracle/product/java/jdk1.6.0_30/bin 
PYTHONPATH=/app/python/lib/python2.7 
[[email protected] django]$ virtualenv --system-site-packages --distribute --python /app/python/bin/python2.7 foo 
Running virtualenv with interpreter /app/python/bin/python2.7 
New python executable in foo/bin/python2.7 
Also creating executable in foo/bin/python 
Installing distribute...<snip>...done. 
Installing pip................done. 
[[email protected] django]$ . foo/bin/activate 
(foo)[[email protected] django]$ which python 
/app/xxx/django/foo/bin/python 
(foo)[[email protected] django]$ which pip 
/app/xxx/django/foo/bin/pip 
(foo)[[email protected] django]$ env 
<snip> 
LD_LIBRARY_PATH=/app/python/lib:/app/openldap/lib:/app/instantclient_11_2 
VIRTUAL_ENV=/app/xxx/django/foo 
PATH=/app/xxx/django/foo/bin:/app/python/bin:/app/openldap/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bin/cfdelivered:/home/user/bin:/app/oracle/product/java/jdk1.6.0_30/bin 
PYTHONPATH=/app/python/lib/python2.7 
(foo)[[email protected] django]$ python 
Python 2.7.3 (default, Jul 27 2012, 11:30:41) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import django 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named django 
>>> 

परिणाम "आयात sys; प्रिंट (sys.path)"

सामान्य:

[[email protected] django]$ python2.7 -c "import sys;print(sys.path)" ['', '/app/python/lib/python2.7/site-packages/cx_Oracle-5.1.2-py2.7-linux-x86_64.egg'‌​, '/app/python/lib/python2.7/site-packages/python_ldap-2.4.10-py2.7-linux-x86_64.e‌​gg', '/app/python/lib/python2.7', '/app/python/lib/python27.zip', '/app/python/lib/python2.7/plat-linux2', '/app/python/lib/python2.7/lib-tk', '/app/python/lib/python2.7/lib-old', '/app/python/lib/python2.7/lib-dynload', '/app/python/lib/python2.7/site-packages'] 

venv के अंदर:

(foo)[[email protected] django]$ python2.7 -c "import sys;print(sys.path)" ['', '/app/xxx/django/foo/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg', '/app/xxx/django/foo/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg', '/app/python/lib/python2.7', '/app/xxx/django/foo/lib/python27.zip', '/app/xxx/django/foo/lib/python2.7', '/app/xxx/django/foo/lib/python2.7/plat-linux2', '/app/xxx/django/foo/lib/python2.7/lib-tk', '/app/xxx/django/foo/lib/python2.7/lib-old', '/app/xxx/django/foo/lib/python2.7/lib-dynload', '/app/xxx/django/foo/lib/python2.7/site-packages'] 
+0

यदि आप 'python2.7 -c "आयात sys; print (sys.path)" का प्रयास करते हैं तो मुद्रित किया गया है, जब वर्चुअलएन्व के अंदर पाइथन और पायथन वर्चुअलएव बनाने के लिए उपयोग किया जाता है? –

+0

कृपया अपने प्रश्न में उपरोक्त लिस्टिंग शामिल करें (मैं प्रति पंक्ति एक पथ रखूंगा) और उन्हें टिप्पणियों से हटा दें। धन्यवाद। –

उत्तर

6

मैं मुझे यकीन नहीं है कि आपने virtualenv बनाया था, लेकिन स्पष्ट रूप से इसकेमें अपेक्षित मान नहीं हैं। यदि आप वर्चुअल वातावरण x बनाने के लिए virtualenv x --system-site-packages का उपयोग करते हैं, तो आपको sys.path पर मूल पायथन की site-packages निर्देशिका दिखाई देनी चाहिए। उपर्युक्त सूची में, अंदरूनी venv केस के लिए अंतिम आइटम सामान्य मामले के समान होना चाहिए: /app/python/lib/python2.7/site-packages। आप यह देखने के लिए कि क्या यह मामला है, आप --system-site-packages के साथ और बिना, दो सरल virtualenv बनाने का प्रयोग कर सकते हैं। यदि नहीं, तो आप अपनी कॉन्फ़िगरेशन को सरल बनाने और फिर से प्रयास करने की कोशिश कर सकते हैं, जैसे PYTHONPATH जैसे पर्यावरण चर को हटाने की आवश्यकता नहीं है जिसे आपको सेट करने की आवश्यकता नहीं है।

+2

पायथनपैथ पर्यावरण परिवर्तक समस्या पैदा कर रहा था। उस समस्या को हल करना। आपकी सहायताके लिए धन्यवाद! –

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