用pyinstaller打包pytorch环境下的深度学习模型,实现通过exe应用实现界面显示模型的分类效果
训练深度学习模型和界面显示,看我之前的博客,链接在下面:
通过残差网络实现CLFAR-10分类,并通过界面显示
环境
1.python3.7
2.pycharm
3.pytorch
4.window10
5.pyqt5、pyinstaller等用的各种库
pyinstaller的使用
1,用python的包安装管理pip自动安装pyinstaller
pip install pyinstaller
安装完成后python安装目录的Scripts文件夹里面会有pyinstaller.exe 文件,
如果Scripts加入环境变量,type “pyinstaller -v” into console 可以查看pyinstaller的版本。
2,转换文件
cd进入py文件所在的文件夹,
pyinstaller后面如果加上-F就是打包为一个exe文件(文件会比较大),如果不加就会有很多库文件;
例如>pyinstaller -F demo.py
加上-w就是打包为没有cmd窗口的exe,不加运行时就会出现cmd窗口。(加不加凭个人喜好)
声明版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://editor.csdn.net/md?not_checkout=1&articleId=110712640
打包过程
一般而言,打包深度学习模型,直接进入anaconda Prompt
下面以我的项目为例:
1》激活pytorch环境
activate pytorch
2》安装pyinstaller
pip install pyinstaller
3》进入需要打包的工程目录下
cd /d E:\CLFAR-10+PyQt5
4》打包命令
pyinstaller -F -w GUI.py -p predict.py -p resnet.py
5》最后生成dist和build两个文件夹
**其中可执行文件就在dist中,我打包的过程中遇到了各种坑,比如警告确少什么文件之类的,我就不一个一个列举,都能通过博客和百度解决了。但是最后发现GUI.exe只能在本机运行换台机器就会报错,花费我三天时间尝试了各种方法都还是不行。为什么换台电脑就不行了呢?
我把代码拆分,单独界面也可以移植打其他电脑,打印错误信息,因为本机完全能够正常运行,哪有错误信息,然后我一条一条查看安装信息,发现是Torch的动态库找不到,拆分代码打包也印证了这一判断,单独打包模型也不能够在其他机器运行,而且错误信息都和完全打包一样。我找到动态库的dll文件拷贝到exe的同级目录下,发现还是不行。
最后我在想是不是我安装的pytorch是GPU版本,而有的电脑没有GPU,或者GPU版本不一样,本机运行时EXE能找到对应的GPU,而其他机器则不行。因为anaconda中有太多用不到的库,因此我决定新建一个虚拟环境。过程如下:
**
解决本机运行而其他机器不能运行的问题
1.在pycharm中新建一个本地的虚拟环境,要记住创建的路径。我这里已经创建过了:
2.activate激活新创建的环境,看代码需要哪些库安装即可如:pip install pyinstaller
pip install numpy
pip install PyQt5等还有pytorchCPU版本最后
查看一下安装的库
想对比anaconda中库要少的多
所以打包后的程序也比之前少的多
最后重新打包即可。即可在其他机器上运行了。
想法
有时候出现问题,真的需要一步一步的拆分去分析,不要放弃,我也是在请教师兄师姐的过程中才分析出问题所在,最后突然地一个灵感就解决了。其实用-D打包可以将环境和程序分开,程序启动由两三分钟到几秒钟,打包的程序由一个多G到几十Mb。这个pyinstaller打包确实坑比较多,如果遇到问题可以评论区留言,最后如果我的这篇文章对你有所帮助的话请给我点个赞,让我的分享有所价值,前后花了快一个星期的时间相当的不容易。