无法同时在标题中导入os.system和matlab.engine

问题描述 投票:-1回答:1

我想启动一个共享的matlab会话,然后立即使用相同的python 3脚本连接到它。我也想在脚本完成后保持打开我的matlab会话。因为将来我想编写一个类来执行此操作,所以我想将所有库导入标头中。

我现在尝试使用os.systemsubprocess.run启动Matlab共享会话,然后使用matlab.engine连接到它。如下代码所示,我在这两个代码(import matlab.engineos.system)中的任何一个之前都执行了subprocess.run,但是我的脚本将永远被卡在/挂在这两行。似乎matlab无法告知我的脚本它已成功打开,因此该脚本一直在等待matlab响应。

# the following code cannot finish running
import os
import matlab.engine
os.system("matlab -r \"matlab.engine.shareEngine\"")

截屏:Screenshot of not working code如果我使用这两个中的任何一个作为previous question建议的答案来启动matlab,则可以毫无问题地启动它。

[我还注意到,如果在启动matlab之后导入matlab.engine(以下示例代码),脚本将完成。但这会使我的课很丑。

# the following code can finish running
import os
os.system("matlab -r \"matlab.engine.shareEngine\"")
import matlab.engine

截屏:Screenshot of working code我试图通过使用subprocess.Popen来绕过此问题。它确实启动了matlab,并尝试使用matlab.engine与其连接而不停止,但是该脚本无法连接到matlab,因为matlab.engine将在matlab完成初始化之前尝试连接。

什么原因导致脚本无法从matlab获得响应的问题?如何在标头中一起导入os / subprocess和matlab.engine?是否需要让脚本停止运行一段时间才能等待matlab完成初始化?

我想启动一个共享的matlab会话,然后立即使用相同的python 3脚本连接到它。我也想在脚本完成后保持打开我的matlab会话。因为将来,我想要...

python python-3.x matlab subprocess matlab-engine
1个回答
1
投票

这里是一个解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.