【问题标题】:Python application crash with error "ImportError: pyexpat.x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt"Python 应用程序崩溃并出现错误“ImportError: pyexpat.x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt”
【发布时间】:2016-05-17 22:59:30
【问题描述】:

我们使用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 导入过程?

提前致谢!

【问题讨论】:

  • 这可能与 LD_LIBRARY_PATH 导致冲突有关。尝试通过 setenv('LD_LIBRARY_PATH', '') 取消设置,然后从 MATLAB 调用您的 python 代码。
  • 当我们运行最小示例时,变量 LD_LIBRARY_PATH 已经为空。我们尝试设置适当的 matlab 路径,但错误仍然存​​在。 “从 MATLAB 调用你的 python 代码”是什么意思?我们的代码以另一种方式工作:我们从 python 调用 matlab。
  • 对不起,我误读了您的问题,我以为您是从 MATLAB 中调用您的 python 代码。不是相反。

标签: python linux matlab


【解决方案1】:

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

“这似乎是由于库与 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 显示行“libexpat.so.1 => /lib/x86_64 -linux-gnu/libexpat.so.1" 和 update-manager 工作正常。"

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

【讨论】:

    猜你喜欢
    • 2022-10-20
    • 2019-06-04
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多