使用win32com Dispatch启动Matlab后,应用程序自动关闭
我想从Python启动Matlab,然后执行一个非常简单的测试。
def execute_matlab_command(command):
handle = win32com.client.DispatchEx('matlab.application')
handle.visible = True
# By using print I know that the handle is valid here
handle.Execute(command)
execute_matlab_handle("x=32")
代码运行得很好,但在调用handle.Execute(command)
之前,Matlab就关闭了。我是不是漏掉了什么,比如一个open()之类的?我看到其他人用(几乎)相同的代码说可以正常工作,但我就是搞不懂这个问题。
编辑:Matlab版本是r2012b,Python版本是2.7
编辑2:我可能找到了Matlab关闭的原因。我是在一个用wxPython构建的GUI中调用DispatchEx,而这个GUI包含一个主循环。我尝试了一个没有GUI的简单脚本,一切都正常。所以我把这个问题留在这里,如果有人遇到同样的问题或者找到了解决方案。
2 个回答
0
使用 Dispatch
def execute_matlab_command(command):
handle = win32com.client.Dispatch('matlab.application')
handle.visible = True
# By using print I know that the handle is valid here
handle.Execute(command)
我之前没用过 DispatchEx
,但我可以保证 Dispatch
是可以用的。
1
这个QA提到,从Python调用MATLAB函数应该没有问题。这个MATLAB页面建议你可能需要对你的MATLAB安装进行一些配置,以便能够以这种方式打开它。
注意:'matlab.application'是一个COM服务器对象,它和你发现的MATLAB包装器可能没有关系;这个包装器只是一个可执行文件。MATLAB的某个库已经被注册为matlab.application的COM服务器。