2012-11-13 13 views
7

मैं पर मेरे मैक एक lxml स्थापित किया है, अजगर को जब मैं इसजब आयात lxml.etree

 
localhost:lxml-3.0.1 apple$ python 
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from lxml import etree 
Traceback (most recent call last): 
    File "", line 1, in 
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0.1-py2.7-macosx-10.6-intel.egg/lxml/etree.so, 2): Symbol not found: ___xmlStructuredErrorContext 
    Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0.1-py2.7-macosx-10.6-intel.egg/lxml/etree.so 
    Expected in: flat namespace 
in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0.1-py2.7-macosx-10.6-intel.egg/lxml/etree.so 
+2

यह आलेख सहायता कर सकता है: [मैक ओएस एक्स 10.7 पर वर्चुअलनव में पायथन एलएक्सएमएल का निर्माण] (http://roderickhodgson.com/blog/2012/10/27/building-python-lxml-on-mac-os- x-10-dot-7 /) (आप शायद _lxml_ की तुलना में _libxml2_ के पुराने संस्करण के विरुद्ध लिंक कर रहे हैं)। –

+0

मैं वर्चुअलएन्व के बारे में सोचूंगा, लेकिन क्या मैं वर्तमान पायथन पर एलएक्सएमएल बेस स्थापित कर सकता हूं? – heghogbbb

+0

धन्यवाद, मैं इस समाधान के लिए एक परीक्षण के बाद यहां वापस आऊंगा – heghogbbb

उत्तर

7

मैं एक ही समस्या थी की तरह अजगर में टाइप त्रुटियों मिलता है। आप पिप के साथ स्थापित किया है इस प्रकार है: pip install lxml

इसके बजाय,

STATIC_DEPS=true pip install lxml 

यह मेरे लिए समस्या हल का उपयोग करने का प्रयास करें।

this website

+0

धन्यवाद, मैंने पहले से ही परीक्षण के दर्जनों परीक्षणों को स्थापित कर लिया है। लेकिन आपका समाधान अच्छा लगता है। – heghogbbb

5

पर मिले आप libxml2 स्थापित किया है, तो यह है कि यह सिर्फ सही संस्करण (वहाँ एक संस्करण डिफ़ॉल्ट रूप से ओएस एक्स के साथ स्थापित किया है) उठा नहीं कर रहा है संभव है। विशेष रूप से, मान लें कि आपने libxml2 को /usr/local पर स्थापित किया है। आप देख सकते हैं क्या पुस्तकालयों साझा etree.so संदर्भ:

$> otool -L /Library/Python/2.7/site-packages/lxml-3.2.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so 
/Library/Python/2.7/site-packages/lxml-3.2.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so: 
    /usr/lib/libxslt.1.dylib (compatibility version 3.0.0, current version 3.24.0) 
    /usr/local/lib/libexslt.0.dylib (compatibility version 9.0.0, current version 9.17.0) 
    /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.3.0) 
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) 

प्रणाली स्थापित संस्करण में है कि प्रतीक के लिए जांच की जा रही:

$> nm /usr/lib/libxml2.2.dylib | grep ___xmlStructuredErrorContext 

मेरे लिए, यह प्रणाली से स्थापित पुस्तकालय में मौजूद नहीं है। संस्करण में मैं स्थापित है, हालांकि:

$> nm /usr/local/lib/libxml2.2.dylib | grep ___xmlStructuredErrorContext 
000000000007dec0 T ___xmlStructuredErrorContext 

इस का समाधान करने के लिए, अपने को स्थापित पथ यकीन DYLD_LIBRARY_PATH में पहले प्रकट होता है बनाने:

$> export DYLD_LIBRARY_PATH=/usr/local/lib 
$> python 
>>> from lxml import etree 
# Success! 
+0

यह कोशिश करने के एक घंटे बाद मेरी समस्या हल हो गई ... इस समस्या का स्थायी समाधान क्या है? – eaponte

+0

आप शायद इस पथ को '/ etc/ld.so.conf.d/lxml.conf' (एक नई फ़ाइल बनाएं) में जोड़ सकते हैं और फिर 'ldconfig' (http://man7.org/linux/man-pages चलाएं) /man8/ldconfig.8.html) –

+0

मेरे लिए, विपरीत करने से मेरी समस्या हल हो गई (क्योंकि प्रतीक वास्तव में सिस्टम के libxml2 संस्करण में था), इसलिए मुझे DYLD_LIBRARY_PATH की पहली प्रविष्टि के रूप में/usr/lib रखना पड़ा – knocte

-1

lxml पैकेज स्थापित करने के लिए निम्न आदेश चलाएं।

pip install lxml --user 

समस्या को ठीक करना चाहिए। मैंने इसे मैक ओएसएक्स 10.7.5 पर परीक्षण किया, यह ठीक काम किया।

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