windows使用pyinstaller 打包sklearn模块出现死循环报错
2024-09-04 22:08:02
前言
解决这个让我花费了很长时间, 我这里说的死循环,不是正常通过 --hidden-import
能解决的问题. 因为我也查询了很多资料 但是无一例外都失败了(能通过 –hidden-import 解决的问题这里我就不详细叙述了)
这里我简单列举一下我查询到的 解决方案:
方案 | 结果 |
---|---|
1. 在导入sklearn前面引入from multiprocessing import freeze_support; freeze_support() |
失败 |
2. 更改打包主入口文件 *.spec(修改一些配置) | 失败 |
3.在导入sklearn前面引入import sklearn.neighbors.typedefs |
失败 |
问题描述
我用PyQt5 结合的sklearn,打包后解决了所有 --hidden-import
和包括缺少 dll
的错误. 然后打包后正常启动了图形化界面,然后开始疯狂循环(弹出窗口),cmd 也是开始疯狂输出错误,只能强制 ctrl+c
问题解决
我更换了我的scikit-learn
版本
pip install scikit-learn==0.19.2
在启动的时候会有一个输出
C:\Python36-32\lib\site-packages\sklearn\externals\joblib\parallel.py:547: UserWarning: Multiprocessing-backed parallel loops cannot be nested below threads, setting n_jobs=1
**self._backend_args)
经过我反复测试,只要有这个输出,打包后就不会出现死循环报错, sklearn运行的速度也会快一些(我也不知道为什么)
经过实验 scikit-learn < 0.21.0
的版本都可以成功,我这里用的是 0.19.2
默认不指定版本安装的是 0.22.0
我的最终打包脚本
pyinstaller -w main_ui.py --hidden-import sklearn.neighbors.typedefs --hidden-import sklearn.utils._cython_blas --hidden-import sklearn.neighbors.quad_tree --hidden-import sklearn.tree --hidden-import sklearn.tree._utils
这里如果你想要调试应该去掉 -w
参数,这样可以在终端输出一些报错, 无窗口模式直接弹窗报一个失败执行脚本
你完全不知道什么地方出错了
其他
其实用pyinstaller
打包了这么多软件,今天我才 感觉不应该使用 -F
选项,因为打包成一个文件执行效率会低很多,但是如果不打包成一个文件的话,一大堆文件显得非常凌乱. 我终于发现应该将他们做成一个安装包,就像正常你安装 windows上的一些软件一样,可以使用 advanced installer来将他们做成一个安装包
最新文章
- js拖拽
- C++11之for循环的新用法
- 页面加载完成后加载多个函数的js完美解决方案
- pojBuy Tickets2828线段树或者树状数组(队列中倒序插队)
- ASP.NET MVC图片管理(上传,预览与显示)
- mysql syntax bypass some WAF
- hdu 1011 树形dp
- 开发工具 之 PowerDesigner
- C# 光标文件的创建
- (原)ubuntu16中编译boost1.61.0库
- C# ^ 运算符和 || 运算符的区别
- [Angular Tutorial] 12 -Event Handlers
- 使用excel整理脚本
- C++版 - 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)
- Generative Adversarial Nets[BEGAN]
- sql server 2008 中的 server profiler 的简单使用
- c++结构体的排序
- 比对软件之STAR的使用方法
- linux系统查毒软件ClamAV
- “全栈2019”Java第二章:安装JDK11(Windows)
热门文章
- day35-IO流02
- 三分钟,带你了解PLM
- Elasticsearch: analyzer
- mysql8数据库修改root密码,以及创建用户遇到的坑,开启远程登录,用navicat进行mysql的远程连接,mysql8.0默认编码方式,部分参数配置查询命令
- 2_Docker
- 使用SqlDataReader对象从数据库中检索只读的数据。
- 洛谷P1962 斐波那契数列 (矩阵快速幂)
- mac通过docker一键部署Nexus3
- 实例分析Scheduled Thread Pool Executor与Timer的区别
- 5.pygame快速入门-精灵和精灵组