如何创建python 3 class启动MATLAB并保持运行?

How to create a python 3 class to start MATLAB and keep it running?

我在 windows 10 上使用 matlab 2017b 和 python 3。我想创建一个可以启动 matlab 并保持打开状态的 class。但是,matlab 在我完成 python 脚本后立即关闭。这是代码:


import matlab.engine
class Test:
    def __init__(self):
        self.eng = matlab.engine.start_matlab("-desktop")

if __name__ == "__main__":
    Test()

我可以使用 "start_matlab" 命令在 python 控制台中打开 matlab,但是使用此 class 我将无法保持打开状态。 有人知道我该怎么做吗?

这是意料之中的。来自 documentation:

If you exit Python with an engine still running, then Python automatically stops the engine and its MATLAB process.

在我看来,您只想从 Python 启动 MATLAB,而不是实际使用 MATLAB 引擎。

为此,您可以使用 Python 的 subprocess 标准库,例如:

import subprocess

class Test:
    def __init__(self):
        subprocess.run(r"C:\Program Files\MATLAB\R2020a\bin\matlab.exe")

if __name__ == "__main__":
    Test()

现在脚本将启动 MATLAB,并且 MATLAB 将在脚本终止时保持打开状态。 显然将显示的路径替换为计算机上 MATLAB 可执行文件的位置。