我们使用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导入过程?
提前致谢!
答案 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;