pyinstaller打包pyqt5程序 全过程 超详细_okfu_DL的博客-程序员秘密

技术标签: pyqt  小程序  环境搭建  

用pyqt5写了个脚本,功能是在一大堆文件中搜索关键词,并定位。界面如下:
在这里插入图片描述
走过了多线程、组合复选框、win32com的各种神奇API,终于成功完美运行了。
然后,开始打包。
环境Annaconda+python3.6,pyqt5,pyinstaller

问题一:打包直接报错

打包命令(前面的路径C:\Users\xdd\Desktop\we_search是主函数文件所在的位置,之后打包的文件也在这个路径下,如果想要在别的地方放打包文件就cd到对应位置,pyinstaller后面加完整路径就好了。

C:\Users\xdd\Desktop\we_search>pyinstaller we_search_3.0.py

报错:C:\qt5b\qt_1524647842210_h_env\Library\plugins缺少文件在这里插入图片描述
很纳闷,不知道是哪里来的文件夹,于是按照错误提示新建了空文件夹在这里插入图片描述

ok,成功 build completed successfully.

问题二:双击exe文件闪退

打包成功后生成build和dist两个文件夹,dist里面有一个文件夹,在里面有exe文件,双击后闪退。
一头雾水。于是用cmd打开这个exe,如图
在这里插入图片描述
豁然开朗,没有ui文件,因为程序的界面不是纯代码的,有用 qt designer设计一部分,要加载ui文件。而pyinstaller打包是不会自动打进去的,这点很重要,包括图片啊,文本啊这些都要自己手动复制进文件夹。

问题三:还是打不开

在这里插入图片描述

not find Qt platform plugin “windows”

大概缺少windows平台的配置文件吧。
于是找啊找,终于在D:\anaconda\Library\plugins\platforms路径下找到了这个platforms文件夹如果是纯python,应该在python36\Lib\site-packages\PyQt5\plugins下面,老规矩拷贝到打包后的文件夹下。于是成了这样。在这里插入图片描述
双击exe,期待的画面出现了,成功运行,舒服。不对!我的图标呢
在这里插入图片描述

问题四:图标显示不出来

我:明明在开发环境下好好的能显示的图标去哪儿了呢?
吃瓜群众:哈哈,简单,你肯定没把图标放进文件夹。
我:
在这里插入图片描述
在这里插入图片描述
好吧,又是一个依赖文件D:\anaconda\Library\plugins\imageformats用于图像显示的(纯python依然在python36\Lib\site-packages\PyQt5\plugins),copy过来,于是成了这样
在这里插入图片描述
运行,成功!!!

在这里插入图片描述

程序自定义图标,骚一下?

试试打包命令后加一个-i 图标.ico

主界面后面有个控制台,强迫症?

那就再加个--noconsole

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/okfu_DL/article/details/84566545

智能推荐

cloudwatch_将CloudWatch Logs与Cloudhub Mule集成_dnc8371的博客-程序员秘密

cloudwatch 在此博客中,我将解释如何为您的Mule CloudHub应用程序启用AWS Cloudwatch日志 。 AWS提供了Cloudwatch Logs Services,以便您可以更好地管理日志。 它比松散便宜。 由于cloudhub会自动翻转超过100 MB的日志,因此我们需要一种机制来更有效地管理日志。 为此,我们创建此自定义附加程序,它将日志发送到cloudwatch...

web页面禁止右键、长按事件_web网页禁用页面右键事件_王大博士的博客-程序员秘密

<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title></head>&

类的默认成员函数_类的成员函数_编程鸟的博客-程序员秘密

类默认生成的成员函数有六个,它们分别是:构造函数、拷贝构造函数、析构函数、赋值操作符重载、取地址操作符重载和const修饰的取地址操作符重载。一、构造函数 1、什么是构造函数? 初始化对象,有且仅在定义一个对象时自动执行一次的函数,就称为构造函数。据悉:类的数据成员是不能在声明类的时候初始化的,因为类并不是一个实体,而是一种抽象的数据类型,并不占据存储空间。2、构造函数的特性 (1)...

linux rpm包,安装路径查看及改变rpm包默认安装路径_linux 如何查看已有的rmp包路径_JackLiu16的博客-程序员秘密

查看:easwy:~$ rpm -qpl ext3grep-0.10.0-1.el5.rf.i386.rpm  /usr/bin/ext3grep  /usr/share/doc/ext3grep-0.10.0  /usr/share/doc/ext3grep-0.10.0/INSTALL  /usr/share/doc/ext3grep-0.10.0/LICENSE.GPL2

andriod ramdisk、boot.img、recovery.img之间的关系_boot和ramdisk_bobuddy的博客-程序员秘密

一、ramdisk介绍 二、ramdisk.img介绍 三、ramdisk、boot.img、recovery.img之间的关系正文回到顶部一、ramdisk介绍ramdisk通过直面意思就大概能理解意思,ram disk虚拟内存盘,将ram模拟成硬盘来使用的文件系统。对于传统的磁盘文件系统来说,这样做的好处是可以极大提高文件访问速度;但由于是ram,所以 在掉电后,这部分内容不能保存。ramdisk文件系统是在系统上电后直接从磁盘一次性加载到内存,在整个运行期间都不会有写回操作,所.

2019年互联网寒冬,带你走进真实的面试杀出重围_打豆豆。的博客-程序员秘密

坐标上海、》博主最近找工作的真实经历。从01月5号-01月11号为期一周的面试安排以及遇到的问题,做一个总结,带你走进2019年这个互联网寒冬环境下找工作的真实经历,带大家做一个梳理,希望能帮到大家。》这里不讲虚的,直接上来就是面试官抛出的问题,以及后来面试通过情况,回答问题情况,关注点在哪,整个做一个详细的说明,毕竟年底,HR想压薪资,并且好多一部分公司招人需求并不是很强烈,寒冬已至,...

随便推点

Java入门小结(6)_Jizhuo_yangqing的博客-程序员秘密

Collection集合数组:存储的是同一类型的元素,可以存储基本数据类型。集合:存储的都是对象。格式作用boolean add(E e)向集合中添加元素boolean remove(E e)删除集合中的元素void clear()清空集合所有的元素boolean contains(E e)判断集合中是否包含某个元素boolean isEmpty()判断集合是否为空int size()获取集合的长度Object[] toArray()

使用DataGridView疑难问题解答_datagridview 使用者不受信任_xuyongbeijing2008的博客-程序员秘密

1. 如何使指定的单元格不可编辑?ReadOnly属性决定了单元格中的数据是否可以编辑,可以设置单元格的ReadOnly 属性,也可以设置DataGridViewRow.ReadOnly 或DataGridViewColumn.ReadOnly使得一行或一列所包含的单元格都是只读的。 默认情况下,如果一行或一列是只读的,那么其包含的单元格也会使只读的。不过你仍可以操作一个只读的单元格,比如选中它,将其设置为当前单元格,但用户不能修改单元格的内容。注意,即使单元格通过ReadOnly属性设置为..

一些质量高口碑好的Java技术网站,初学者看过来!_戏精程序媛的博客-程序员秘密

作为开发者来说 , 必备的除了对编码的热情还要有自己的一套技巧 , 另外不可缺少的就是平时学习的网站。作为一个Java开发者,学习最新技术和关注行业内容是你不断提升自我的有效手段。因此,我会特别关注一些质量高口碑好的Java技术网站,在这里分享给大家。1、DZone这是一个非常有趣的网站,有相当多的开发者在这个网站上分享他们博客文章。就像一场冒险一样,在这里,你永远不知道下一秒会看到什么内容...

nvidia 程序安装失败_AI视觉网奇的博客-程序员秘密

cuda10.1和pytorch也能兼容卸载重新安装cuda,对pytorch没有影响。也不报错,就弹出一个框,全部组件都未安装原因1:一般CUDA安装失败都是由于其中Visual Studio(VS) Intergration无法安装导致的:原因2:我自己查的原因,已经安装了cuda10.1,再装10.0就报错了。...

DMARC 介绍_weixin_30342209的博客-程序员秘密

DMARC 是什么?DMARC 是 “Domain-based Message Authentication, Reporting & Conformance” 的缩写。它用来检查一封电邮是否来自所声称的发送者。DMARC 建立在广泛使用的 SPF 和 DKIM 协议上, 并且添加了域名对齐检查和报告发送功能。这样可以改善域名免受钓鱼攻击的保护。这是来自 dmarc.org 的示意...

推荐文章

热门文章

相关标签