我有一个 plist,每天都会调用一个 python 脚本。python 脚本会根据成功情况调用不同的 matlab 例程。当我使用计算机时,这可以正常工作,但是当我不使用计算机时,守护进程会给我以下错误:
Traceback (most recent call last):
File "/Users/<username>/Documents/daemontest/matlab_batcher.py", line 108, in <module>
eng = matlab.engine.start_matlab()
File "/Library/Python/2.7/site-packages/matlab/engine/__init__.py", line 92, in start_matlab
eng = MatlabEngine(option)
File "/Library/Python/2.7/site-packages/matlab/engine/matlabengine.py", line 230, in __init__
self.__dict__["_matlab"] = pythonengine.createMATLAB(tokens)
matlab.engine.EngineError: MATLAB process can not be created.
我在节能偏好设置中勾选了“防止计算机进入睡眠状态”,并取消勾选了“启用电源休眠”,因此我相信计算机不会进入睡眠状态。但它仍然无法启动 matlab。
问题可能是 matlab 许可证问题吗?如何在我不处于“活动”或登录状态的情况下启动 matlab?
答案1
最终找到了一个解决方案,嗯,更确切地说是一个变通方法。
在 python 脚本中,我使用的是 matlab 的 MatlabEngine。显然,这仅在用户处于活动状态时启动。我仍然不知道细节,但一定是与 matlab 许可证有关,以及用户处于非活动状态几分钟后 imac 切换到的型号。不过,正确理解这一点会很有趣……
实际有效的方法是使用 bash 命令而不是 MatlabEngine 来调用 matlab。这不像 MatlabEngine 那样提供与 matlab 函数的直接交互,但对于我的情况来说完全足够了。