python打包exe文件的问题总结及解决办法
在现实生活中,有时候我们写的程序需要发给小伙伴用,而小伙伴没有python,这时候我们需要将程序打包成exe文件发给小伙伴用。
今天讲下打包深度学习模型
打包一般要用到cmd命令行,要求cmd能执行python程序。
因为我们一般将程序放在文件夹里,然后cmd直接进入文件夹。
教程见链接:
cmd执行python程序,文件夹直接进入cmd程序
一.虚拟环境建立
我们需要通过虚拟环境解决打包exe过大的问题。
一般的模型如机器学习等,我们可以通过pipenv来建立虚拟环境。
使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)
使用pipenv有个缺陷,就是无法更改python版本,至少我无法更改。
我们可以改用anaconda来建立虚拟环境。anaconda虚拟环境可以更改python版本
anaconda虚拟环境教程大全
虚拟环境下,对深度学习框架版本要求很低,如我的电脑上TensorFlow虚拟环境为1.5.0时可以运行,更高的版本显示错误。而在电脑上,我的tensorflow可以跑最新的版本。
python 与各深度学习版本对应关系见链接。自己参考然后在虚拟环境下安装合适的python版本和深度学习框架
python深度学习环境支撑列表 各版本对应关系,Keras,TensorFlow,pytorch ,caffe等。
二.带资源打包
对于深度学习模型,我们一般都是先训练保存。然后将保存的模型作为资源文件进行打包,教程参考前面链接。
注意事项:如我们不能像常规一样,将训练程序在电脑python3.7,keras=2.3下进行训练,然后把得到的模型.h5,放在虚拟环境下进行打包,而虚拟环境下的python=3.6,Keras不是2.3,是其他版本。深度学习不同版本框架保存的模型是不能共用的,否则会出现类似错误
在其他机器保存keras模型(.h5),load_model(~.h5)后报错【in from_config if ‘class_name’ not in config[0] or config[0][‘class_name’] == ‘Merge’:】
原因:两台机器Keras版本号不一致
所以我们需要将训练程序放在虚拟环境下进行训练,得到模型配置,然后将模型配置作为资源文件一起打包。
cmd 进入文件夹,文件夹进入虚拟程序,然后,cmd执行python程序。
cmd执行python程序,文件夹直接进入cmd程序
总结深度学习模型打包步骤
1.将训练程序和界面程序一起放在一个单独文件夹里,注意界面程序读取模型资源路径方法
2.cmd进入该文件夹,然后通过anaconda建立虚拟环境。
3.在虚拟环境下安装打包exe和程序相关的库,安装相关版本的python。
4.在虚拟环境下,进入python,执行训练程序,模型配置得到保存。
5.在虚拟环境下 将模型配置作为资源文件,和界面程序 一起打包。得到最终exe文件
我的一次成功打包结果示意图见下
附上机器学习打包方法
python打包exe 之打包sklearn模型中的各种坑及其解决方法。
本文地址:https://blog.csdn.net/kobeyu652453/article/details/108853403