前言

解决这个让我花费了很长时间, 我这里说的死循环,不是正常通过 --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来将他们做成一个安装包

最新文章

  1. js拖拽
  2. C++11之for循环的新用法
  3. 页面加载完成后加载多个函数的js完美解决方案
  4. pojBuy Tickets2828线段树或者树状数组(队列中倒序插队)
  5. ASP.NET MVC图片管理(上传,预览与显示)
  6. mysql syntax bypass some WAF
  7. hdu 1011 树形dp
  8. 开发工具 之 PowerDesigner
  9. C# 光标文件的创建
  10. (原)ubuntu16中编译boost1.61.0库
  11. C# ^ 运算符和 || 运算符的区别
  12. [Angular Tutorial] 12 -Event Handlers
  13. 使用excel整理脚本
  14. C++版 - 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)
  15. Generative Adversarial Nets[BEGAN]
  16. sql server 2008 中的 server profiler 的简单使用
  17. c++结构体的排序
  18. 比对软件之STAR的使用方法
  19. linux系统查毒软件ClamAV
  20. “全栈2019”Java第二章:安装JDK11(Windows)

热门文章

  1. day35-IO流02
  2. 三分钟,带你了解PLM
  3. Elasticsearch: analyzer
  4. mysql8数据库修改root密码,以及创建用户遇到的坑,开启远程登录,用navicat进行mysql的远程连接,mysql8.0默认编码方式,部分参数配置查询命令
  5. 2_Docker
  6. 使用SqlDataReader对象从数据库中检索只读的数据。
  7. 洛谷P1962 斐波那契数列 (矩阵快速幂)
  8. mac通过docker一键部署Nexus3
  9. 实例分析Scheduled Thread Pool Executor与Timer的区别
  10. 5.pygame快速入门-精灵和精灵组