从lxml导入etree时的libxml2导入错误

6 投票
2 回答
6640 浏览
提问于 2025-04-18 12:53

我正在Enthought Canopy中运行python-docx。我的系统是Ubuntu 14.04,运行在VMWare Workstation 10上。每当我尝试导入docx或者从lxml导入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

我查了一下,发现另一个人也遇到了类似的错误,于是我按照他的指示去做,但还是没成功。后来我意识到我电脑上安装的是libxml2版本2.9.1。

这是不是意味着我需要安装旧版本的2.9.0的libxml2,还是说还有其他问题?我可以通过apt-get找到2.9.1,但找不到2.9.0。在我决定去找旧版本之前,我想这里可能有人有更好的主意。

谢谢!

2 个回答

1

我对Ubuntu不是很熟悉,但这个问题肯定是lxml和libxml2以及/或libxslt之间的关系导致的。之所以在运行python-docx时出现这个问题,是因为这会导致lxml被导入。

我建议你先卸载lxml,然后再重新安装。我记得lxml和libxml2、libxslt之间有些紧密的联系,但那是很久以前的事了。很有可能是lxml链接的版本和你安装的版本不匹配。

如果这样还不行,那就需要更深入地检查libxml2和libxslt的安装情况。这里有一些常见的建议:如何在Ubuntu上安装lxml

python-docx对lxml包的版本要求并不是特别严格,如果你通过apt能安装到的版本,应该就能正常工作。

11

只需要安装下面这个软件包。

对于Ubuntu系统

apt-get install libxslt-dev

对于CentOS系统

yum install libxslt-devel

撰写回答