windows使用pyinstaller 打包sklearn模块出现死循环报错
前言
解决这个让我花费了很长时间, 我这里说的死循环,不是正常通过 --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来将他们做成一个安装包
windows使用pyinstaller 打包sklearn模块出现死循环报错的更多相关文章
- Windows 8.1升级至Windows 10后,启动VisualSVN Server Manager报错:提供程序无法执行所尝试的操作 (0x80041024)的解决
1.1.Windows 8.1升级至Windows 10后,启动VisualSVN Server Manager报错:提供程序无法执行所尝试的操作 (0x80041024),VisualSVN Ser ...
- vue-cli打包构建时常见的报错解决方案
报错1:vue-cli项目本地npm run dev启动后,chrome打开是空白页 解决方案:将config下的index.js中的assetsPublicPath路径都设置为‘/’绝对路径 报错2 ...
- onerror="javascript:this.src='images/defaultUpload.png';"【容易导致死循环报错】
当无法找到默认图片时,onerror="javascript:this.src='images/defaultUpload.png';"容易导致死循环报错
- Windows 10 上安装 3D Studio Max 2016 报错的解决办法
在 Windows 10 上安装 3D Stuido Max 2016 报错,无法正常安装,查看日志是 VC 运行时安装错误,经过分析发现在 Windows 10 上已经有这些运行时并且版本比安装包中 ...
- windows下pyinstaller打包踩坑记录
示例: 需要打包的是 ReadConfig.py 文件,同文件夹下调用了Interface.py文件,ui文件夹下调用了 Ui_config.py和Ui_Error.py文件,Interface.py ...
- Python tarfile模块解压报错 invalid mode ('wb') or filename
问题原因 在使用tarfile模块解压一份Linux服务器上的打包文件时, 出现了错误提示: IOError: [Errno 22] invalid mode ('wb') or filename. ...
- Uiautomator打包使用第三方库,报错的解决方案
问题引源: 在做自动化过程中,想在用例执行完毕后,自动生成该用例测试报告: 报告定义为Excel格式文件,且在用例执行过程中生成. 所以我在Uiautomator工程中引用了jxl.jar,用以处理E ...
- 利用json模块解析dict报错找不到attribute 'dumps'[python2.7]
[背景] 环境: RHEL 7.3 版本: python2.7 [错误情况] 写了一个简单的python脚本 将dict转换为json 脚本如下: #!/usr/bin/python #-*- cod ...
- python安装模块的时候报错error: command 'gcc' failed with exit status 1
[情况] 在写Python代码的时候,需要用到psutil模块,需要安装. 但是在安装时,报错:error: command 'gcc' failed with exit status 1 [解决步骤 ...
随机推荐
- 2.Python环境搭建
Python是一个跨平台.可移植的编程语言,因此可在windows.linux/unix和Mac os x系统中安装使用.安装完成后,你会得到Python解释器环境,一个命令行交互环境,一个简单的集成 ...
- 1. Fluentd安装方法
Fluentd是一个跨平台的开源系统,支持在Linux(Redhat.Ubuntu.Debian).Windows平台上运行.MacOS呢?官方并没有明显指出,但是在安装说明中列出了通过Ruby Ge ...
- ERP是什么呢?
ERP(Enterprise Resource Planning,企业资源计划)系统,是进行物质资源.资金资源和信息资源集成一体化管理的企业信息管理系统,ERP统领企业全局,为管理层服务,重心在于企业 ...
- 深入理解AQS--jdk层面管程实现【管程详解的补充】
什么是AQS 1.java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列.条件队列.独占获取.共享获取等,而这些行为的抽象就是基于AbstractQueu ...
- 使用python制作动图
利用python制作gif图 引言 当写文章时候,多张图片会影响排版,可以考虑制作gif图 准备 pip install imageio 代码 # This is a sample Python sc ...
- springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
要实现的目的:根据登录用户.查询出当前用户具有的所有权限.然后登录系统后.根据查询到的权限信息进行不同的操作. 以下的代码是在搭好的框架之下进行的编码. 文章目录 核心实现部分. 第一种是将用户表和角 ...
- Tensorflow Lite从入门到精通
TensorFlow Lite 是 TensorFlow 在移动和 IoT 等边缘设备端的解决方案,提供了 Java.Python 和 C++ API 库,可以运行在 Android.iOS 和 Ra ...
- OpenMP 入门
OpenMP 入门 简介 OpenMP 一个非常易用的共享内存的并行编程框架,它提供了一些非常简单易用的API,让编程人员从复杂的并发编程当中释放出来,专注于具体功能的实现.openmp 主要是通过编 ...
- Codeforces Round #831 (Div. 1 + Div. 2) A-E
比赛链接 A 题解 知识点:数学. \(2\) 特判加 \(7\),其他加 \(3\) 直接偶数. 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include <bits ...
- c语言中 -> 的用法
->是一个整体,它是用于指向结构体. 1.换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到"->&quo ...