1. 前言
直接调用本地的matlab引擎时很简单的方案,但是不能打包到其他设备运行,只能在本地自嗨。所以换了这个方案——将matlab脚本打包成python库。
2. 正文
step1:matlab端操作
-
打开matlab,在命令后输入:
deploytool
弹出窗口:
-
选择Library Compiler
左上角设置为python package, 加入需要处理的matlab脚本
matlab会自动检测调用的脚本,并加入files requied for your library to run.
-
填写包信息,完成后点击右上角的package。
-
等待打包完成
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,其他版本未做测试。