python打包exe 之打包sklearn模型中的各种坑及其解决方法。

之前学习了如何打包,如何建立虚拟环境打包,以及如何带资源打包exe.

python打包成exe 可执行文件 。教程
使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)
python将资源文件一起打包进exe 讲解(有算例)

今天在此打包资源文件基础上,学习如何打包sklearn模型。
sklearn是机器学习模型,当在现实生活中,我们有时需要跑模型,而神经网络需要的包更多,程序编写也更复杂。在仅仅是为了解决问题时,我们常常倾向于选择sklearn机器学习模型。
但是打包sklearn模型时常常出现各种错误。
我总结下我打包时出现的错误及其解决方法。

问题1:from sklearn.externals import joblib 失败 cannot import name joblib

也许你在打包后运行exe文件出现这个问题,那是因为你在安装程序所需要的库时,sklearn一般是默认最新的,而最新的skleran中已经没有joblib。

这是因为joblib已经从sklearn中移除了,可以直接改为 import joblib
注意改原始程序中的模型保存与加载代码,
改为joblib
joblib使用方法

import joblib
#将训练的模型保存到磁盘(value=模型名) 默认当前文件夹下
joblib.dump(filename=‘xx.model’)
model1 = joblib.load(filename=“xx.model”)

问题2:ImportError: No module named ‘sklearn.utils.cython_blas’

打开.spec文件

添加hiddenimports=[‘cython’, ‘sklearn’, ‘sklearn.utils._cython_blas’ ],

问题3:pyinstaller 打包后运行exe程序出现的"ModuleNotFindError"
问题如图所示:
我在程序中使用的是svm程序,然后运行显示没有这个包。

首先,使用pyinstaller 打包生成".spec" 文件
接下来,使用文本编辑器打开".spec"文件,在 hiddenimport=[] 部分添加缺少的module

-hidden-import 应用需要的包,但是没有被打包进来,这里的错误是最多的,因为一般是第三方包隐式调用其他包,然后打包出来的程序显示Fate Error不能运行。需要自己再添加进去,

如图所示:图中导入是贝叶斯模型,因为我后面模型改用贝叶斯啦,非svm
如果是svm,解决方法同图。

然后使用pyinstaller 生成新的exe程序:

pyinstaller xx.spec

打包教程见上面给的链接
在解决这三个问题后,我的示范算例最后结果

可以运行

深度学习打包教程
python打包exe之打包深度学习模型踩坑记录及其解决办法。

在这里插入图片描述
电气工程的计算机萌新:余登武。如果你觉得本文对你有用,请点个赞支持下,谢谢。
在这里插入图片描述

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总裁余(余登武)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值