机器学习or深度学习模型变编译成exe文件
一、运行环境
win10 专业版
cuda=10.0
numpy=1.14.5
OpenCV-python=4.3.0.36
pyinstaller=3.6
torch=1.2.0
torchbision=0.3.0
二、环境安装
1、pyinstaller安装
安装步骤见https://editor.csdn.net/md/?articleId=107556151
2、pytorch安装
国内安装比较慢,可以设置源,详见
https://blog.csdn.net/weixin_43218120/article/details/107628209
(1)离线版本安装https://download.pytorch.org/whl/cu100/torch_stable.html
上述链接中,是关于cuda10.0的torch安装的包,在其中寻找适合自己的python环境的即可。
(2)在线版本安装
自己到官网官网链接寻找适合自己电脑的版本
因为我的电脑安装的是cuda10.0所以我修改10.1的安装命令为:conda install pytorch torchvision cudatoolkit=10.0
这里删除-c pytorch是因为加上这个下载的pytorch还是使用的国外的源,所以删除之后就会使用我们上面修改的国内原。
三、运行测试
因为涉及代码问题,我在这里只贴出自己运行的结果,不贴出来代码。
1、首先进入你需要编译的py文件的所在目录执行命令eg:
pyinstaller -F predict.py
具体运行的结果如下图:
当最终如下图中所示,则表示编译完成
在编译完成之后的py文件所在的目录又产生了几个文件夹具体如下:
所在的exe文件的dist文件中,因为我的代码是关于图像的,在predict.py文件中使用图片的路径是相对路径,所以需要把我的图片信息移动到dist文件中,如果你采用的是绝对路径则不要进行移动。
还有还要把你训练好的模型移动到dist文件中,原因同上。
2、运行exe文件的结果如下:
运行前的dist文件的文件目录
运行之后的dist文件的文件目录:
自行测试在python环境中的py文件的结果是否与exe文件产生的结果是否一致。我的结果是一致的。但是运行的时间不是一样的。
四、坑路历程
1、利用pyinstaller工具将py代码封装成exe文件,最好在anconda环境下创建新的虚拟环境,因为python包依赖比较复杂,创建新环境可以减少最终引入的包。
2、路径中需要全英文,否则报以下错误。
3、找不到模块
因为在我的py文件中我import另一个文件夹的自编写的另一个py文件
在用python写程序调试时,模块的调用使用下面的方式
from 工程名.模块文件名 import 模块类名
解决办法是:在准备将py文件生成exe时,在main.py的目录中,创建一个与工程名同名的文件夹,将所引用的模块文件,全部放入此文件夹中,然后再生成exe程序。
这时生成exe文件的命令则需要修改为
pyinstaller -F predict.py -p 工程名\模块文件名.py
本文地址:https://blog.csdn.net/weixin_43218120/article/details/107628109