当前位置:   article > 正文

[转]pyinstaller打包讲解 -F,-D,-w,-c,以及--hidden-import的用法_pyinstaller -d

pyinstaller -d

哔哩哔哩上有视频教程
https://www.bilibili.com/video/BV1gh411Z7At

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

首先讲一讲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 * 那样会导致打出来的包很大。

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

改进的手段是添加–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文件夹下的显示问题。最后,可能有相对路径的资源会失效,我们新建一个文件夹,把资源放在对应的位置就好啦,如图。

---------------------
作者:王负剑!王负剑!
来源:CSDN
原文:https://blog.csdn.net/infent/article/details/84976312
版权声明:本文为作者原创文章,转载请附上博文链接!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/630733
推荐阅读
相关标签
  

闽ICP备14008679号