Get errors when importing lxml.etree in python

I installed lxml on my mac when I type python like this

  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
+7
source share
3 answers

I had the same problem. If you installed it using pip as follows: pip install lxml

Try using instead

 STATIC_DEPS=true pip install lxml 

This solved the problem for me.

Found on this website

+7
source

If you installed libxml2 , then it’s possible that it just doesn’t pick the correct version (the OS X version is installed by default). In particular, suppose you installed libxml2 in /usr/local . You can check which common etree.so libraries link:

 $> 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) 

Checking this symbol in the system version:

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

For me, this is not present in the system library. However, in the version I installed,

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

To solve this problem, first make sure that the installation path is specified in DYLD_LIBRARY_PATH :

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

Run the following command to install the lxml package.

 pip install lxml --user 

should fix this problem. I tested it on MAC OSX 10.7.5, it worked fine.

-one
source

All Articles