【发布时间】: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 代码。不是相反。