最近因为科研,我需要在python的代码中调用matlab的脚本/函数,然后需要安装配置matlab.engine。我用了前后一周的时间分别在Windows和Linux系统上配置好了,而且我在linux系统上(服务器)没有root权限。所以,踩了非常多的坑,而且许多问题mathwork的官网也没有解答, 首先在Windosws上,还是比较容易的。先找到matlab的安装目录,在matlabrootexternenginespython下找到setup.py。cmd中在上面的路径下键入python setup.py install就可以了。 在使用的时候用下面的函数就可以愉快的调用matlab函数/脚本了 只需要注意,python的版本matlab支持的是有限制的,然后注意事先添加好python的环境变量。 如果小伙伴的linux系统拥有root权限,那么和windows是上并无差别。**然而!!**有些童鞋是课题组的服务器,或者别的原因没有root权限,这就非常坑了!因为你没办法在matlab和python的安装目录里新建文件。当然,你可以选择在自己的用户目录下重新安装matlab和python,然后export path也可以。可是,python还好装,可是matlab又花钱( 然而这里面还是很多坑,首先这个帮助文档告诉我们要提前加入你的installdir,然而,其实还不够。这个路径下还有很多层文件夹,一定要延申到matlab文件夹的前一级目录,这个目录下除了matlab文件夹,还有一个matlabengineforpython-RXXXX-pyX.X.egg-info的文件,这个文件非常重要,等下再提。 然而,当你发现此时没报错的时候,以为万事大吉之时,**还有最大的坑就要来临!!!**如果此时你运行一下上面的eng = matlab.engine.start_matlab()代码,会发现下面的错误 EngineError: Unable to launch MVM server: License Error when using MATLAB Engine with python 很坑啊有没有,谁能想到License居然是UNKNOWN!!所以后面才会license error吧。然后我尝试在这里输入license许可号码,发现没用。然后我发现matlab的安装目录下有一个licenses的文件夹,把这个文件夹的路径写在这里就好了 然后你运行下面的代码就没问题了 祝各位python调用matlab愉快!!所以也许这套解决方法是全网第一,hhhhhh 。一、matlab.engine在Windows上的安装
>cd matlabrootexternenginespython >python setup.py install
import matlab.engine eng = matlab.engine.start_matlab() eng.matlabfun()##matlabfun表示某个matlab函数
二、matlab.engine在Linux上的安装
破解版又麻烦 )同时还特别大,貌似没有root权限也提取不了iso,还要从windows提取iso文件再上传,非常痛苦有没有!!!
所以,我发现matlab官网提供了非root权限(包括没有matlab的权限或者没有python的权限,以及二者都没有的三种情况)的安装方式送上链接:https://ww2.mathworks.cn/help/matlab/matlab_external/install-matlab-engine-api-for-python-in-nondefault-locations.html非root安装的matlab官网链接cd "matlabrootexternenginespython" python setup.py build --build-base="builddir" install --prefix="installdir" ##builddir和installdir是你想放在的两个路径,自己设置的
到这里,你就可以愉快的导入matlab.engine了,我这里用sys.path的方式加入路径import sys sys.path.append("installdir/lib/···/site-position") import matlab.engine
而这个问题在mathworks的社区中没有一个有效的回答,都是说查看什么查看matlab版本了,检查matlab是否正常了,这些废话,根本不解决问题有木有!!
所以,我研究发现这里提示的是license error,而我研究了很久发现了这个重要的文件,也就是前面说的matlabengineforpython-RXXXX-pyX.X.egg-info,打开之后是这样的
Metadata-Version: 1.0 Name: matlabengineforpython Version: R2018a Summary: A module to call MATLAB from Python Home-page: https://www.mathworks.com/ Author: MathWorks Author-email: UNKNOWN License: UNKNOWN ##注意这一行 Description: UNKNOWN Platform: Linux Platform: Windows Platform: MacOS
Author: MathWorks Author-email: UNKNOWN License: /user/···/matlab/licenses ##你自己的matlab目录 Description: UNKNOWN Platform: Linux
import matlab.engine eng = matlab.engine.start_matlab()
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算