pyinstaller打包exe软件并解决 Pyinstaller failed to execute script main问题(用了sklearn库)

一、基本的操作

pyinstaller -F --noconsole ***.py -n 软件名字 -i 1.ico

-F 参数是打包后,只留下一个.exe的可执行文件
默认情况下的参数是 -D 打包后在dist目录有多个依赖文件(但是用D启动会快一些)
–noconsole 参数是运行时不显示控制台的意思,一般是 -w ,但是我w无法运行(注意这里两个–不是手误)
-n 另外还可以使用 -n *** 的方式确定exe的文件名,如 -n 我的第一个exe程序
-i 显然是icon图标

二、出现问题 Pyinstaller failed to execute script main

首先确保原来的程序是可以运行的,然后这就是在命令行窗口启动这个程序看一下报错,参考了这个方法:https://blog.csdn.net/sxf1061700625/article/details/99713613

1、取消 -w 参数,让他显示命令窗口;
2、按住shift,右击鼠标,选择 “在此处打开powershell”(或命令窗口);
3、将生成的exe拖入,按回车;
4、可以看到具体的报错信息;
5、如果是“unable to find Qt5xx.dll”,就将Python安装路径下的/Lib/site-packages/PyQt5/Qt/bin添加到环境变量;
6、如果是“no module xxx”,就pip install安装对应的模块;

然后最后一行果然报错,ModuleNotFoundError: No module named 'sklearn.utils._cython_blas',怎么又是sklearn相关的问题呢。
在这里插入图片描述然后在这里看到了解答:https://stackoverflow.com/questions/57108026/pyinstaller-modulenotfounderror-no-module-named-sklearn-utils-cython-blas
也就是引入缺少的这一部分变量:pyinstaller -D --noconsole --hidden-import="sklearn.utils._cython_blas" --hidden-import="sklearn.neighbors.typedefs" --hidden-import="sklearn.neighbors.quad_tree" --hidden-import="sklearn.tree._utils" main.py -n 水泵检测系统
然后因为我的软件里有一个读取特定的Excel文件,因此还得把这个Excel文件放在exe当前目录下面,即可运行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章