Python应用程序崩溃,错误" ImportError:pyexpat.x86_64-linux-gnu.so:未定义的符号:XML_SetHashSalt"

时间:2016-02-08 10:10:25

标签: python linux matlab

我们使用matlab的python引擎来连接python的matlab代码。似乎与使用过的libexpact.so库存在一些冲突。

最小的错误示例是:

#!/usr/bin/env python
from xml.dom import minidom
import matlab.engine

a = minidom.parse("solution_example.xml")
print(a)

这会产生输出:

  File "./minimal.py", line 9, in <module>
    a = minidom.parse("solution_example.xml")   File "/usr/lib/python2.7/xml/dom/minidom.py", line 1917, in parse
    from xml.dom import expatbuilder   File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 32, in <module>
    from xml.parsers import expat   File "/usr/lib/python2.7/xml/parsers/expat.py", line 4, in <module>
    from pyexpat import * ImportError: /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt

但是,当省略行import matlab.engine时,程序运行正常。

任何想法可能是什么问题或我们如何调试python导入过程?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我今天早上遇到了同样的错误信息,在环顾四周之后,我发现这个解决方案适合我。所以我在这里重新发帖。希望将来有这个帮助。

  

&#34;这似乎是由与libexpat的库冲突引起的。我做了ldd /usr/lib/python2.7/lib-dynload/pyexpat.so并意识到我的 libexpat.so.1 指向 /usr/local/lib/libexpat.so.1 而不是 /lib/x86_64-linux-gnu/libexpat.so.1 (前者引用过时的版本,1.5.2而不是1.6.0)。我不知道/ usr / local / lib中的libexpat来自哪里。

     

我将我的libexpat文件隐藏在/ usr / local / lib 中(使用附加的.backup重命名),现在运行ldd /usr/lib/python2.7/lib-dynload/pyexpat.so显示行&#34; libexpat.so.1 = &GT; /lib/x86_64-linux-gnu/libexpat.so.1"和update-manager正常工作。&#34;

https://ubuntuforums.org/showthread.php?t=2094005