使用win32com Dispatch启动matlab,应用程序自行关闭

时间:2014-04-16 13:36:24

标签: python matlab wxpython win32com

我正在尝试从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")

代码运行正常,但matlab在调用handle.Execute(command)之前关闭。我在这里错过了什么,比如open()左右?我见过其他人使用(几乎)相同的代码并说它工作正常,无法解决问题。

编辑:Matlab版本r2012b,python版本2.7

编辑2:我可能发现为什么matlab会关闭。我从内置wxPython的GUI调用DispatchEx,它包含一个mainloop。我尝试使用没有GUI的简单脚本,一切正常。如果有人遇到同样的问题或找到解决方案,我会在这里打开这个问题。

2 个答案:

答案 0 :(得分:1)

质量保证Calling MATLAB functions from python表示应该没有问题。这个Matlab page表明您可能必须将Matlab安装配置为接受以这种方式打开。

注意:作为COM服务器对象的'matlab.application'不太可能与您发现的matlab包装器有关;包装器只是一个可执行文件。其中一个matlab库已经注册为matlab.application的COM服务器。

答案 1 :(得分: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可以使用。