Python 应用程序崩溃并出现错误 "ImportError: pyexpat.x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt"

标签 python linux matlab

我们使用 matlab 的 python 引擎与来自 python 的 matlab 代码进行交互。似乎与使用的 libexpact.so 库有一些冲突。

一个最小的 buggy 示例是:

#!/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 导入过程?

提前致谢!

最佳答案

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

"It seems that this is caused by library conflicts with libexpat. I did ldd /usr/lib/python2.7/lib-dynload/pyexpat.so and realized that my libexpat.so.1 was pointing to /usr/local/lib/libexpat.so.1 rather than /lib/x86_64-linux-gnu/libexpat.so.1 (the former referencing an outdated version, 1.5.2 instead of 1.6.0). I don't know where the libexpat in /usr/local/lib came from.

I hide my libexpat files in /usr/local/lib (renamed with .backup appended) and now running ldd /usr/lib/python2.7/lib-dynload/pyexpat.so displays the line "libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1" and update-manager works correctly."

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

关于Python 应用程序崩溃并出现错误 "ImportError: pyexpat.x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35266973/

相关文章:

python - BeautifulSoup 和 Amazon.co.uk

python - fetchall() 对于 DELETE 查询抛出 "Previous SQL was not a query."

python - 如何在 Python 中通过字符串访问类变量?

c++ - KDevelop4调试{...}无法展开

python - Django 函数要求用户不登录

linux - 如何将 Windows Identity 从 Angular 应用程序传递到托管在 Linux 服务器上的 asp.net core 2.0 webapi

linux - 为什么我不能使用 int 0x80 从指向堆栈内存的指针进行 sys_write?

matlab - 为什么 matlab 会导致终端 std out 崩溃以及如何修复它?

matlab - 在 MatLab 中制作电影

matlab - 如何在matlab中求解n*log2(n)=A?