在Windows 7x64上从Python3.x调用Matlab2013

时间:2014-04-01 10:28:03

标签: python windows matlab python-3.x mlabwrap

任务:在Windows 7(所有x64)上使用Python 3.x从Matlab 2013b调用函数。

问题:是否有Python包允许我这样做?

我已经尝试过:

  • mlabwrap
  • 蟒-MATLAB桥
  • pymatlab

但这些都不适用于上面给出的配置。

非常感谢有关使用Python 3.x的工作配置的任何信息。

如果您需要更详细的信息,请告诉我们。


更新:我目前正在尝试使用Matlab2011b和Pyhton 2.7,因为这些似乎是最常用的版本。现在我被困在以下地方:

python-matlab-bridge 我可以毫无问题地导入模块,但是一旦启动会话,就会弹出一个Matlab命令窗口而不会发生任何其他事情。 Python窗口显示:

Starting MATLAB on ZMQ socket tcp://127.0.0.1:55555
Send 'exit' command to kill the server
............................................................Matlab session timed
 out after 60 seconds
MATLAB failed to start
Press any key to continue . . .

每次都会发生这种情况,并且没有给出任何错误。

mlabwrap 我试图安装mlabwrap using this guide。在输入'python setup.py install'时,会弹出一个Matlab命令窗口,但没有任何反应。如果我关闭命令窗口,Python输出显示:

WINDOWS SPECIFIC ISSUE? Unable to remove c:\users\martin\appdata\local\temp\tmp1
y2kdk; please delete it manually
[Error 32] Der Prozess kann nicht auf die Datei zugreifen, da sie von einem ande
ren Prozess verwendet wird: 'c:\\users\\martin\\appdata\\local\\temp\\tmp1y2kdk'


INSTALL ABORT: 'matlab -nodesktop -nosplash -wait -r "fid = fopen(\'c:\\users\\m
artin\\appdata\\local\\temp\\tmp1y2kdk\', \'wt\');fprintf(fid, \'%s%c%s%c%s%c\',
 version, 10, matlabroot, 10, computer, 10);fclose(fid); quit"' RETURNED ERROR C
ODE -805306369
PLEASE MAKE SURE matlab IS IN YOUR PATH!

我的%Path%看起来像这样(只有重要的部分;):

D:\MATLAB\R2011b\bin;C:\Program Files\ZeroMQ 4.0.4\lib;D:\Python27;D:\Python27\scripts;D:\MATLAB\R2011b\runtime\win64;D:\MATLAB\R2011b\extern\lib\win64\microsoft;D:\MATLAB\R2011b\bin\win64

任何帮助在Windows上获得Matlab和Python之间的任何连接都值得赞赏!我真的不明白为什么这一切都不起作用......


Update2:我现在可以安装mlabwrap,但我无法启动它。 当我尝试导入mlabwrap时,Matlab命令窗口会在一分钟后打开并关闭。 Python输出是:

>>> import mlabwrap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python27\lib\site-packages\mlabwrap.py", line 645, in <module>
    mlab = MlabWrap()
  File "D:\Python27\lib\site-packages\mlabwrap.py", line 405, in __init__
    self._session = mlabraw.open(os.getenv("MLABRAW_CMD_STR", ""))
mlabraw.error: Unable to start MATLAB(TM) engine

我仔细检查了Matlab的engdemo是否正常工作。

1 个答案:

答案 0 :(得分:1)

我现在使用python-matlab-bridge工作了。 我手动将它转换为Python3,并且这些更改已合并到官方仓库中,因此它现在可以开箱即用。

如果您收到错误消息,那么&#39; messenger init&#39;找不到,请确保Lib\site-packages\pymatbridge\matlab中有PATH

如果您有任何问题或其他信息可以随意评论此答案,我会添加它以帮助用户开始使用python-matlab-bridge。