Python调用matlab脚本终极解决方案

1. 前言

直接调用本地的matlab引擎时很简单的方案,但是不能打包到其他设备运行,只能在本地自嗨。所以换了这个方案——将matlab脚本打包成python库。

2. 正文

step1:matlab端操作

  • 打开matlab,在命令后输入:

    deploytool
    

    弹出窗口:
    Python调用matlab脚本终极解决方案_第1张图片

  • 选择Library Compiler

    左上角设置为python package, 加入需要处理的matlab脚本
    设置

    matlab会自动检测调用的脚本,并加入files requied for your library to run.
    Python调用matlab脚本终极解决方案_第2张图片

  • 填写包信息,完成后点击右上角的package。
    Python调用matlab脚本终极解决方案_第3张图片

  • 等待打包完成
    Python调用matlab脚本终极解决方案_第4张图片
    Python调用matlab脚本终极解决方案_第5张图片

step2. python端操作

安装刚刚生成的库(以anaconda虚拟环境为例)
  • 进入虚拟环境
    conda activate ek80Python
    
  • 找到生成库的目录,工作目录切换至该目录
    cd F:\DLOU\ek80\package\EK80Example\for_redistribution_files_only
    
  • 安装库
    python setup.py install
    

step3. 在python程序中调用

import EK80Example


ek80 = EK80Example.initialize()
ek80.EK80Example() # 在matlab脚本中,唯一入口函数为:EK80Example

3. 后记

按照以上步骤打包后,如果不能运行。就在cmd窗口中运行一次,查看是因为哪个库没打包成功,把site-packages目录下该库复制到exe目录下就可以了。
另外,这种方式打包的exe文件如果在其他的机器上运行,还需要安装一个MCR(MATLAB Runtime)

另外,此方法对python版本有要求。MATLAB2016B版本可使用python3.5,但不能使用python3.8,其他版本未做测试。

你可能感兴趣的:(Python调用matlab脚本终极解决方案)