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入门篇之正则表达式
Oct 20 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
Python制作爬虫抓取美女图
Jan 20 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
使用Python从零开始撸一个区块链
Mar 14 Python
Django forms组件的使用教程
Oct 08 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
编写python代码实现简单抽奖器
Oct 20 Python
Python自动化之批量处理工作簿和工作表
Jun 03 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 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 日期时间处理函数小结
2009/12/18 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
php实现倒计时效果
2015/12/19 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
js 数组操作代码集锦
2009/04/28 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python生成指定尺寸缩略图的示例
2014/05/07 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Python threading的使用方法解析
2019/08/28 Python
python入门之基础语法学习笔记
2020/02/08 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
自主招生自荐信范文
2013/12/04 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
考研英语复习计划
2015/01/19 职场文书
给医院的感谢信
2015/01/21 职场文书
简爱读书笔记
2015/06/26 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技