2012-10-22 32 views
61

नोट: मैं वर्चुअलenvwrapper का उपयोग कर रहा हूँ।वर्चुअलएन्व के भीतर काम करने के लिए मुझे `pip install lxml` क्यों नहीं मिल सकता है?

आभासी वातावरण सक्रिय करने से पहले: आभासी वातावरण सक्रिय करने के बाद

$ pip install lxml 
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/lib/python2.7/dist-packages 
Cleaning up... 

:

(test-env)$ pip install lxml 
force/build/lxml/src/lxml/includes/etree_defs.h:9:31: fatal error: 
libxml/xmlversion.h: No such file or directory 

compilation terminated. 

error: command 'gcc' failed with exit status 1 

---------------------------------------- 
Command /home/chaz/dev/envs/test-with-system-python-force/bin/python2 
.7 -c "import setuptools;__file__='/home/chaz/dev/envs/test-with- 
system-python-force/build/lxml/setup.py';exec(compile(open(__file__). 
read().replace('\r\n', '\n'), __file__, 'exec'))" install --record 
/tmp/pip-bJ6Q_B-record/install-record.txt --single-version-externally 
-managed --install-headers /home/chaz/dev/envs/test-env/include/site/python2.7 failed with error code 1 in 
/home/chaz/dev/envs/test-env/build/lxml 
Storing complete log in /home/chaz/.pip/pip.log 
+1

मैं किसी भी तरह से यह देखने में असफल रहा कि यह एक विशिष्ट प्रोग्रामिंग प्रश्न है। आईएमएचओ, यह http: //www.serverfault से संबंधित है।कॉम –

+4

@ मार्कस डब्ल्यूएमह्लबर्ग वर्चुअलेंव एक बेहद आम पायथन उपयोगिता है जिसका मुख्य रूप से विकास के दौरान प्रोग्रामर द्वारा उपयोग किया जाता है, न कि तैनाती के दौरान sysadmins द्वारा। एलएक्सएमएल बहुत लोकप्रिय है, और इस प्रकार की समस्या दुर्लभ नहीं है। मैं इसे "प्रोग्रामर द्वारा आमतौर पर उपयोग किए जाने वाले सॉफ़्टवेयर टूल" के मानदंडों के तहत विषय पर मानता हूं। –

+0

@ जेरेमीबैंक्स मैं वर्चुअलएन्व के बारे में अच्छी तरह से जानता हूं। लेकिन मुझे लगता है कि हमारे पास पर्यावरण से संबंधित समस्या है और उपयोगी उत्तर प्राप्त करने की संभावना सर्वरफॉल्ट पर बहुत अधिक होनी चाहिए। –

उत्तर

110

आप शायद पहले से ही lxml आपके सिस्टम, शायद स्थापित पर स्थापित किया है एक प्रणाली पैकेज की वजह से। इस प्रकार, पहला प्रयास (pip install lxml सक्रिय वर्चुअलएन्व के बिना) विफल नहीं होता है, लेकिन यह इसे इंस्टॉल भी नहीं करता है; यह वास्तव में कुछ भी नहीं करता है।

वर्चुअलनव में, डिफ़ॉल्ट रूप से, सिस्टम संकुल को अनदेखा कर दिया जाता है। इसलिए, पीपी सोचता है कि lxml स्थापित नहीं है। इसलिए, यह इसे आपके वर्चुअल वातावरण में स्थापित करने का प्रयास करता है।

एलएक्सएमएल में सी मॉड्यूल शामिल हैं जिन्हें ठीक से स्थापित करने के लिए संकलित करने की आवश्यकता है। हालांकि, उन सी मॉड्यूल का संकलन आपके पास कुछ "विकास पुस्तकालय" पहले से ही स्थापित होने पर भरोसा करता है। ये विकास पुस्तकालय सी पुस्तकालय हैं, पायथन नहीं, और इस तरह के पीपी स्वचालित रूप से उन्हें इंटरनेट से लाने और उन्हें आपके लिए स्थापित करने में सक्षम नहीं होंगे।

इसलिए, आपको अपने विकास प्रबंधक का उपयोग करके, इन विकास पुस्तकालयों को अपने आप स्थापित करने की आवश्यकता होगी। एक डेबियन प्रणाली में (उबंटू) की तरह, इस ...

apt-get install libxml2-dev libxslt-dev 

यह अपने स्थानीय सिस्टम को libxml2 और libxslt विकास पुस्तकालयों स्थापित हो जाएगा है। यदि आप lxml को स्थापित करने के लिए पुनः प्रयास करते हैं, तो सी मॉड्यूल संकलन चरण काम करना चाहिए क्योंकि अब ये विकास पुस्तकालय आपके सिस्टम पर हैं।

आपके द्वारा प्राप्त त्रुटि संदेश इस तथ्य के कारण था कि ये पुस्तकालय गायब थे (libxml/xmlversion.h: No such file or directory त्रुटि संदेश का हिस्सा)।

यह भी देखें: How to install lxml on Ubuntu

+1

'सफलतापूर्वक एलएक्सएमएल स्थापित' धन्यवाद! मुझे उत्सुकता है यदि आप ऐसी जगह के बारे में जानते हैं जो आवश्यक शीर्षलेखों को विभिन्न (लोकप्रिय) पायथन पैकेजों पर मैप करता है। मुझे अन्य के साथ भी समस्याएं आई हैं। इसके अलावा, क्या apt-get python-dev केवल मानक लाइब्रेरी के लिए शीर्षलेख प्राप्त करता है? –

+3

सर्वश्रेष्ठ शर्त: अनुपलब्ध हेडर फ़ाइल के लिए Google पर खोजें, उम्मीद है कि किसी और को एक ही समस्या हो रही है। इसके अलावा, हाँ, पायथन-देव केवल आपको मानक पुस्तकालय के लिए शीर्षलेख प्राप्त करता है। libxml2-dev के पास पायथन के साथ कुछ लेना देना नहीं है: libxml2 एक सी लाइब्रेरी है जिसे आप काम करने के लिए एक पायथन लाइब्रेरी का उपयोग कर रहे हैं। यही कारण है कि जब आप पाइथन-देव स्थापित करते हैं तो यह स्थापित नहीं किया गया था। अन्यथा, आपको मूल रूप से दुनिया में अस्तित्व में प्रत्येक सी लाइब्रेरी को स्थापित करने की आवश्यकता होगी ताकि यह सुनिश्चित किया जा सके कि आपके पास सभी शीर्षलेख हैं जिन्हें आपको प्रत्येक पायथन लाइब्रेरी (जैसे एलएक्सएमएल) को अतिरिक्त चरणों के बिना काम करने की आवश्यकता होगी –

+0

पैसे पर, धन्यवाद बहुत! – EvertW

18

centos उपयोगकर्ताओं के लिए: जब हो रही:

error: command 'gcc' failed with exit status 1

DO:

sudo yum install libxslt-devel libxml2-devel 
5

आप lxml प्रणाली के स्तर पर स्थापित है, तो और चाहते हैं इसे virtualenv में माइग्रेट करने के लिए जिसे आपनेके साथ नहीं बनाया था, आप इसे अपने virtualenv के dist-packages फ़ोल्डर में सिमलिंक कर सकते हैं।

अपने virtualenv बाहर, एक अजगर खोल में:

import lxml 
print lxml.__file__ 

मेरे मामले में, यह /usr/lib/python2.7/dist-packages में पाया जाता है। एक एलएक्सएमएल फ़ोल्डर और अंडे-जानकारी फ़ाइल होगी। जहां भी आपका वर्चुअलनव है, /lib/python-x.y/dist-packages फ़ोल्डर में जाएं (आपको dist-packages बनाने की आवश्यकता हो सकती है), और लाइब्रेरी फ़ोल्डर और अंडे दोनों में सिमलिंक करें।