使用PyQt5从零进行大数据app构建(十三)pyinstaller打包讲解 -F,-D,-w,-c,以及--hidden-import的用法

教程合集地址:https://blog.csdn.net/infent/column/info/30927

代码下载地址:https://download.csdn.net/download/infent/10846010

最终应用来到了打包阶段,这里坑点居多,因此拿出一节来记录一下我这两天的历程。我只能说没有解决不了的问题只有定义不清晰的问题,只要方向对了,问题会随着了解的加深而迎刃而解。

首先讲一讲pyinstaller的用法,在你想放置应用的文件夹下打开cmd,pyinstaller + 参数 +文件入口或打包定义文档。

-F:生成一个文件夹,里面是多文件模式,启动快。

-D:仅仅生成一个文件,不暴露其他信息,启动较慢。

-w:窗口模式打包,不显示控制台。

-c:跟图标路径,作为应用icon。

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

我用到的也就是这些了,还是讲讲流程。最开始是打包日志里报一些xxx module找不到,这些pip安装就行了,关于环境问题,我建议用python3.5,因为据说3.6容易打包失败。但是我用的一开始就是3.5,pyinstaller是3.4,pyqt5.9这都没有问题,解决完这些明面上的包,还是启动不了的话,就是隐式调用了一些包,我的是sklearn的一些包和pymysql的包隐式调用而我的程序里没导入所以一直启动不了,但是也不要什么都import * 那样会导致打出来的包很大。

这里是和百度学的,就是先默认打包,不用写参数,让错误信息打到控制台,但是有个问题,控制台闪了一下就退出了,看不清。这样就需要先录下来,再去看了,下面是我当时录下来的两个截图,可以看到就是包导入的问题,明确的问题所在,就可以改进了。

使用PyQt5从零进行大数据app构建(十三)pyinstaller打包讲解 -F,-D,-w,-c,以及--hidden-import的用法_第1张图片

使用PyQt5从零进行大数据app构建(十三)pyinstaller打包讲解 -F,-D,-w,-c,以及--hidden-import的用法_第2张图片

改进的手段是添加--hidden-import参数,可以看到我上一节的截图里有一个lvtonguilogic.spec文件,这个就是打包信息文件,这个文件会首先被创建出来,然后更新build文件夹和生成dist文件夹。

pyinstaller -F -w -i E:\lvtongEazyVersion\image\lvtong.ico .\lvtonguilogic.py,一开始不需要加入--hidden-import参数,我建议先生成spec文件,然后打开文件在里面进行编辑,如加入hiddenimports=['cython','sklearn','sklearn.ensemble','sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils','scipy._lib.messagestream','pymysql'],最后,pyinstaller .\lvtonguilogic.spec,记得先删除原来的打包文件夹,不删除的话覆盖的时候可能显示无权限操作。这里还有一个小坑点,就是那个icon可能不会立刻显示,我打了好几遍都不管事,我是用的单文件打包的,最后把它粘贴出去就显示了,我觉得其实就是在dist文件夹下的显示问题。最后,可能有相对路径的资源会失效,我们新建一个文件夹,把资源放在对应的位置就好啦,如图。

使用PyQt5从零进行大数据app构建(十三)pyinstaller打包讲解 -F,-D,-w,-c,以及--hidden-import的用法_第3张图片

代码下载地址:https://download.csdn.net/download/infent/10846010,请勿以商业目的传播。最后是不是很简洁,照着教程你也能做自己的应用了哦。

 

从一心进大厂到银行科技部,我这一路的薪路历程(持续更新后续)

https://blog.csdn.net/infent/article/details/105477629

 

 

 

你可能感兴趣的:(PyQt5,pyqt5开发流程)