现有两段程序,分别是Matlab和Python编写,因为时间着急或者懒不想把Python程序改成Matlab,或者Matlab程序改成Python,所以最直接的方法就是调用。此处记录Matlab调用Python程序的方式。
基于链接link 中第2种方法进行扩充,即“将python程序打包成exe,并通过matlab调用exe”的方式。
(1)安装第三方库pyinstaller(安装方式:cmd中输入pip install pyinstaller)
(2)在cmd中输入pyinstaller -F E:\test.py(路径根据情况修改)
(3)注:在打包过程中可能会出现“UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 130: invalid continuat”错误,解决方式为删除程序所有中文字符+在控制台中输入 chcp 65001后再打包,参考链接link 。
上述方式由于在打包过程中需要打包关联的第三方库,因此打包后的文件会很大(通常几百M);为了减小打包文件体积,可只打包所需的第三方库,为此,需要创建一个只安装了所需第三方库的虚拟环境,在此虚拟环境中进行打包(原因:如果你没有在虚拟环境中安装pyinstaller,你同样可以使用pyinstaller命令,但是调用的是你系统原本的那个python编译器,内含很多关联库,导致即使在虚拟环境中,你打包的exe文件仍然非常大)。参考链接link 中的结论部分。
但此种方式本人尝试后发现仍旧很大(直接打包为302M,虚拟环境中打包为230M,减小得不明显,可能原因是如果用了numpy或者pandas包,会需要很多衍生的包,因此比较大;并且打包后的文件还无法运行,可能是我哪儿没弄好)。
示例如下(注:此时python程序一定是可以直接运行,而不是需要输入参数的):
通过Matlab直接调用python程序,参考链接link 中第1种方法,讲解很清楚。
但注意:该方法可调用简单的Python程序,如果Python程序中涉及很多第三方库,或者程序本身涉及很多函数,就容易运行不成功。
至此,Matlab调用Python就已经能够实现。
【整理不易,转载请注明出处和相关链接,否则必究!】