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

作者:ayiya_Oese 时间:2022-02-09 11:25:57 

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

安装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

  • 其他文件可以通过附加文件添加

来源:https://blog.csdn.net/ayiya_Oese/article/details/116748085

标签:pyqt5,exe,可执行文件
0
投稿

猜你喜欢

  • 有关Server.Mappath详细接触

    2010-07-07 11:35:00
  • Python设计模式编程中Adapter适配器模式的使用实例

    2023-11-16 10:02:15
  • python简单实现最大似然估计&scipy库的使用详解

    2022-11-03 23:45:01
  • python global关键字的用法详解

    2023-12-30 03:32:02
  • idea连接sql sever2019图文教程(超详细)

    2024-01-15 03:03:13
  • js判断输入字符串是否为空、空格、null的方法总结

    2024-04-19 09:56:56
  • 如何使用XML实现多渠道接入网站的构架

    2008-09-05 17:13:00
  • mysql 开启慢查询 如何打开mysql的慢查询日志记录

    2024-01-20 20:48:35
  • Python matplotlib实用绘图技巧汇总

    2023-10-05 01:12:39
  • Python制作运行进度条的实现效果(代码运行不无聊)

    2021-04-11 15:46:10
  • Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    2022-04-27 00:26:39
  • 简单了解python的break、continue、pass

    2022-06-01 01:20:10
  • perl的cgi高级编程介绍

    2022-10-04 23:41:28
  • python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】

    2021-08-24 03:26:17
  • python实现动态数组的示例代码

    2023-10-22 16:02:07
  • css有趣而诡异的数组

    2009-02-04 16:06:00
  • css样式命名规则

    2008-04-30 12:31:00
  • python数值基础知识浅析

    2021-12-10 07:07:49
  • 如何在网页设计中使用个性化字体

    2009-07-07 11:29:00
  • js控制文本框输入的字符类型方法汇总

    2024-04-10 13:57:03
  • asp之家 网络编程 m.aspxhome.com