pyqt5打包成exe可执行文件的方法


Posted in Python onMay 14, 2021

本文内容会引起杀毒软件的莫名兴奋,建议先安抚杀毒软件,让杀毒软件先休息一下再继续操作

安装python3.6

转exe会遇到很多问题,其中部分是由于python版本不合适引起的,如果可以,尽量用3.5或3.6版本。

在Windows上安装python3.6.8

安装时勾选Add to path选项添加到环境变量

打开终端查看版本:

python -V
pip -V

准备工作

安装包:

pip isntall pyinstaller
pip install auto-py-to-exe
pip install pyqt5

如果代码中有其他依赖包也要对应安装好,要是编译成功后,打开之后程序直接死掉,很可能就是依赖包没装好

创建python文件center.py

# center.py
import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication
 
class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):               
        self.resize(250, 150)
        self.center()
        self.setWindowTitle('Center')    
        self.show()
        
    #控制窗口显示在屏幕中心的方法    
    def center(self):
        #获得窗口
        qr = self.frameGeometry()
        #获得屏幕中心点
        cp = QDesktopWidget().availableGeometry().center()
        #显示到屏幕中心
        qr.moveCenter(cp)
        self.move(qr.topLeft())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行python center.py可以看到在屏幕中心的窗口,说明代码没问题,这一步很有必要,要是代码跑不起来,编译也没有作用。

编译

pyinstaller不是交叉编译器,exe要在Windows上运行,只能在Windows上编译。

pyinstaller将python代码编译为exe可执行文件在Windows上使用

Python:3.6-3.9
pip install pyinstaller

auto-py-to-exe通过可视化界面使用pyinstaller

Python : 3.5-3.9
pip install auto-py-to-exe
auto-py-to-exe

启动auto-py-to-exe

auto-py-to-exe

单文件

启动之后选择对应文件,先试试单文件,选择基于窗口

pyqt5打包成exe可执行文件的方法

对应的命令是:

pyinstaller --noconfirm --onefile --windowed --icon "D:/01ubuntu/Icon.ico"  "D:/01ubuntu/center.py"

因为不基于控制台启动则需要依赖于bootloader,找不到bootloader就会报错:

pyqt5打包成exe可执行文件的方法

选择基于控制台,也就是启动的时候会弹出终端黑窗口

pyqt5打包成exe可执行文件的方法

对应生成的命令:

pyinstaller --noconfirm --onefile --console --icon "D:/01ubuntu/Icon.ico"  "D:/01ubuntu/center.py"

运行成功,生成的exe文件在ouput文件下:

pyqt5打包成exe可执行文件的方法

双击center.exe会看到弹出一个黑框,接着pyqt界面就会出来,但是有点慢。

pyqt5打包成exe可执行文件的方法

编译成功,只是这个黑窗口有点难看

pyqt5打包成exe可执行文件的方法

单目录

pyqt5打包成exe可执行文件的方法

对应命令:

pyinstaller --noconfirm --onedir --console --icon "D:/01ubuntu/Icon.ico"  "D:/01ubuntu/center.py"

生成的结果不再是单个exe文件,而是一个文件夹,里面包含了启动center.py需要的各种子文件

pyqt5打包成exe可执行文件的方法

里面依旧包含了center.exe可执行文件,但是可以发现,现在的exe笑了很多,因为其他部分变成了可见的文件,双击依旧可以打开,而且,这次的启动速度明显快了很多。

pyqt5打包成exe可执行文件的方法

完整项目

前面的测试是单个.py文件的的项目,但是实际项目中,一般都不会只是一个文件,而是由很多文件和文件夹,可以通过附加文件添加,这里我的整个工程都在myApp中,主程序是main.py被调用程序是UI_mainWin.py

pyqt5打包成exe可执行文件的方法

对应命令:

pyinstaller --noconfirm --onedir --console --icon "D:/01ubuntu/myApp/Icon.ico" --add-data "D:/01ubuntu/myApp/Ui_mainWin.py;." --add-data "D:/01ubuntu/myApp/images;images/"  "D:/01ubuntu/myApp/main.py"

解决找不到bootloader

在编译的时候,杀毒软件很开心的跟我报告他抓到了小偷,结果打开一看,前面的坑竟然是这个邀功的杀毒软件挖的。

pyqt5打包成exe可执行文件的方法

点击找回原文件进入他家,发现我要的东西全被杀毒软件锁在小房间

pyqt5打包成exe可执行文件的方法

勾选之后点击恢复所选解救大家,还好这些文件还没遭受酷刑

pyqt5打包成exe可执行文件的方法

送他们回到他们原本该去的地方

pyqt5打包成exe可执行文件的方法

TODO

将编译结果转成可安装文件

总结

  •  二话不说,先关杀毒软件
  • 配好环境,先跑代码,这是编译的基础
  • 编译结果单文件:保密性好,但是慢
  • 编译结果多文件:比较快
  • 无控制台需要有pre-compiled bootloader
  • 其他文件可以通过附加文件添加

到此这篇关于pyqt5转为exe可执行文件的方法的文章就介绍到这了,更多相关pyqt5转为exe可执行文件 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中http请求方法库汇总
Jan 06 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
pandas string转dataframe的方法
Apr 11 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
10个Python小技巧你值得拥有
Sep 29 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
python collections模块的使用
Oct 16 Python
Python如何配置环境变量详解
May 18 Python
Python 机器学习工具包SKlearn的安装与使用
python process模块的使用简介
May 14 #Python
django学习之ajax post传参的2种格式实例
May 14 #Python
Python djanjo之csrf防跨站攻击实验过程
python控制台打印log输出重复的解决方法
聊一聊python常用的编程模块
May 14 #Python
如何获取numpy array前N个最大值
May 14 #Python
You might like
PHP最常用的正则表达式
2017/02/13 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
python改变日志(logging)存放位置的示例
2014/03/27 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
python实现梯度法 python最速下降法
2020/03/24 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
大学生毕业自我鉴定范文
2013/11/03 职场文书
表扬稿格式范文
2015/01/16 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
食品卫生管理制度
2015/08/06 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python
python turtle绘图
2022/05/04 Python