从lxml导入etree时的libxml2 ImportError

时间:2014-07-11 01:52:34

标签: python lxml libxml2 libxslt python-docx

我正在尝试在Enthought Canopy中运行python-docx。我在VMWare Worstation 10上运行Ubuntu 14.04。每当我尝试从lxml导入docx或导入etree时,我都会收到一个似乎与libxml2库有关的错误:

ImportError: /usr/lib/x86_64-linux-gnu/libxslt.so.1: symbol xmlBufUse, version   LIBXML2_2.9.0 not defined in file libxml2.so.2 with link time reference

我查了一下,找到了另一个有类似error的人,我按照指示行事。仍然没有运气。然后我意识到我的计算机上有libxml2版本2.9.1。

这是否意味着我需要获得较旧的2.9.0版本的libxml2,或者还有其他什么?我可以使用apt-get找到2.9.1,但不能找到2.9.0。在开始这条路之前,我认为这里有人可能有更好的主意。

谢谢!

2 个答案:

答案 0 :(得分:3)

只需安装在包裹下面。

对于Ubuntu

apt-get install libxslt-dev

对于Centos

yum install libxslt-devel

答案 1 :(得分:1)

我对Ubuntu没有多少专业知识,但这个问题肯定在lxml和libxml2和/或libxslt之间。运行python-docx时发生这种情况的唯一原因是导致导入lxml。

我会尝试卸载lxml并重新安装。我依稀记得用libxml2和libxslt进行lxml硬链接,但那是不久前的事了。这与lxml链接的内容和已安装的版本之间的版本不匹配是合理的。

如果没有做到这一点,我会更深入地了解libxml2和libxslt安装。这里有一些受欢迎的建议:How to install lxml on Ubuntu

对于拥有最新的lxml软件包,python-docx并不是特别挑剔,如果你可以使用它,那么它应该可以正常工作。