Запуск Matlab с Win32com Dispatch, приложение закрывается

Я пытаюсь запустить Matlab с Python, а затем выполнить действительно простой тест.

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. Я вызываю DispatchEx из графического интерфейса, встроенного в wxPython, который содержит mainloop. Я пробовал с помощью простого скрипта без графического интерфейса, и все работает нормально. Я оставляю этот вопрос открытым здесь, если у кого-то есть такая же проблема или он нашел решение.


person Pphoenix    schedule 16.04.2014    source источник
comment
Это было решено?   -  person Oliver    schedule 03.05.2014
comment
Добавлен ответ, так как я нашел ответ из других вопросов и подходов.   -  person Pphoenix    schedule 04.05.2014


Ответы (2)


QA Вызов функций MATLAB из python указывает, что проблем быть не должно. Этот Страница Matlab предполагает, что вам, возможно, придется настроить установку Matlab, чтобы она открывалась таким образом.

Примечание. Маловероятно, что «matlab.application», который является объектом COM-сервера, имеет какое-либо отношение к оболочке Matlab, о которой вы узнали; оболочка - это просто исполняемый файл. Одна из библиотек Matlab была зарегистрирована в качестве COM-сервера для matlab.application.

person Oliver    schedule 04.05.2014

используйте 1_

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 сработает.

person laike9m    schedule 16.04.2014
comment
Matlab запускается, но выключается при полной загрузке без выполнения команды. Dispatch не закрывается автоматически? - person Pphoenix; 16.04.2014