2011-06-28 12 views
19

पर स्थानीय पुस्तकालयों को प्राथमिकता देने के लिए वर्चुअलएन्व कैसे प्राप्त करूं मुझे एक बड़े सर्वर पर पायथन का उपयोग करने की आवश्यकता है जहां मेरे पास रूट पहुंच नहीं है। मैं मशीन पर विश्व स्तर पर स्थापित एक की तुलना में numpy के एक नए संस्करण का उपयोग करना चाहता हूँ। virtualenv इस उद्देश्य के लिए वास्तव में बनाया गया है, और मैं अपने आभासी वातावरण बनाने और निम्न कमांड के साथ इसे सक्रिय:वैश्विक लाइब्रेरीज़

virtualenv my_personal_python 
source my_personal_python/bin/activate 

मैं तो पुस्तकालय के नए संस्करण है कि मैं

pip install numpy==1.6.0 
उपयोग करने में रुचि हूँ स्थापित

समस्या यह है कि जब मैं अब numpy आयात करता हूं यह अभी भी पुराने वैश्विक संस्करण आयात करता है, न कि वर्चुअल वातावरण की my_personal_python/lib/python2.6/site-packacges निर्देशिका में स्थापित।

मैं के रूप में एक संभव समाधान, --no-साइट-संकुल झंडा, की पहले से ही जानकारी है:

virtualenv --no-site-packages my_personal_python 

जब मैं इस फ़्लैग का उपयोग तो आयात के रूप में मैं इच्छा व्यवहार करता है। लेकिन मैं इस ध्वज का उपयोग नहीं करना चाहता क्योंकि मैं स्थानीय रूप से सभी संकुल को फिर से स्थापित नहीं करना चाहता हूं, मैं बस उनमें से कुछ को ओवरराइड करना चाहता हूं।

(मैं अजगर 2.6, virtualenv 1.6.1 का उपयोग कर रहा है, और मेरी मशीन पर PYTHONPATH चर सेट नहीं है।)

अद्यतन यहां तक ​​कि अगर मैं करने के लिए आभासी वातावरण से साइट-संकुल निर्देशिका जोड़ने पायथन पथ की शुरुआत, इस स्थान से numpy आयात नहीं किया जाता है (हालांकि अन्य संकुल इस स्थान से आयात किए जाते हैं)। शायद यह समस्या numpy के लिए विशिष्ट है और सामान्य रूप से संकुल के साथ नहीं होता है।

+0

AFAIK, आपको उम्मीद के अनुसार काम करना चाहिए। हो सकता है कि यह वर्चुअलएन्व के पुराने संस्करण में एक बग है जो संभावित रूप से उस कंप्यूटर पर स्थापित है ... –

+0

यह सुनिश्चित नहीं है कि यह समस्या है, लेकिन क्या पीपी सक्रिय वर्चुअल वातावरण का उपयोग करने के लिए जानता है? जांचें और देखें कि क्या आपके वैश्विक साइट-पैकेज में numpy 1.6.0 स्थापित है या नहीं। – mklauber

+0

पीपी वर्चुअल वातावरण का उपयोग करने के बारे में जानता है, और यह वर्चुअल वातावरण की साइट-पैकेज निर्देशिका में संस्करण 1.6.0 को ठीक से स्थापित करता है। Numpy का वैश्विक संस्करण 1.4.0 है। – conradlee

उत्तर

7

कुछ चीजें दो बार जांचें।

which python

which pip

अब क्या आप वाकई सही चल रहे हैं, अजगर शुरू करने और कर रहे हैं:

import sys 
print "\n".join(sys.path) 

फिर बाहर निकलने के अजगर और टाइप echo $PATHecho $PYTHONPATH के बाद मुझे लगता है कि संदेह है समस्या दिखाई देगी और यदि आप इसे PYTHONPATH सेट करके ठीक नहीं कर सकते हैं तो आप इसेके साथ कर सकते हैंमॉड्यूल।

3

यह मेरे लिए काम किया।

मेरा which python और which pip बिल्कुल सही थे लेकिन sys.path गलत था। मेरा वर्चुअलनव ~/virtualenvs/envy में है। मूल रूप से मैं कर रहा था:

export PYTHONPATH=~/virtualenvs/envy/lib/python2.7/site-packages:$PYTHONPATH 

लेकिन यह अभी भी मेरे वर्चुअलएव के बजाय सिस्टम-व्यापी पैकेज आयात कर रहा था। लेकिन मैं this PyCon talk on virtualenv देखा और कोशिश करने का फैसला किया:

export PYTHONPATH=~/virtualenvs/envy/lib/python2.7:$PYTHONPATH 

सूचना दूसरा विकल्प में site-packages की कमी है। और यह वास्तव में काम किया! मुझे आशा है कि यह किसी और की मदद करेगा।

1

इस समस्या का एक और समाधान (मुझे कम से कम मदद मिली): मेरे ~/.local/lib/python2.7/site-packages/easy-install.pth में, /usr/lib/python2.7/dist-packages जैसे (IMHO अनावश्यक) लाइनें थीं। इन पंक्तियों को हटाने में मदद मिली, शायद उन्हें बहुत पुराने समय से छोड़ दिया गया था, जब easy_install अभी भी अजनबी चीजें करता था।

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