exe打包工具_pyqt5快速上手基础篇12-使用Pyinstaller打包应用程序

前言

本节我们学习如何使用Pyinstaller打包pyqt5应用程序,pyqt5的打包要比之前文章中讲述的tkinter的打包稍微复杂点,主要区别在于pyqt5打包需要导入Qt相关库,笔者开始打包时候遇到错误,网上众说纷纭,有说把python3版本调到python3.5.2的,也会有说pyinstaller3.6安装包版本有问题,需要用源码安装......

一、基础知识

1.pyinstaller简介

PyInstaller的主要目标是开箱即用地与第三方软件包兼容。这意味着,使用PyInstaller,使外部软件包正常工作所需的所有技巧已经集成在PyInstaller本身中,因此不需要用户干预。

和其他打包工具相比,PyInstaller的主要优势在于PyInstaller可与Python 2.7和3.5-3.7一起使用,由于透明压缩,它可以构建较小的可执行文件,它是完全多平台的,并且使用OS支持来加载动态库,从而确保完全兼容。

1.pyinstaller安装

安装命令:

pip3 installer pyinstaller

查看python3版本号,输入:

python3 --version
cd673a924725cf749c35bc0243d57a6a.png

可以看到,本文我们使用的python3版本是3.7.6,为了避免发生异常,建议大家和我保持一致,或者尽量使用3.5.0 3.5.2版本。

二、实例

1. 打开第一节1-setup代码

打开第一节代码,然后输入python3 run.py,运行程序

abb577edf1b7146837c836a3947a152e.png

本节我们要做的就是使用pyinstaller打包python文件为exe可执行程序。

2. 变量 frozen 注入到 sys

import sys, osif hasattr(sys, 'frozen'):    os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']

这段代码和cx_freeze库相关,在 windows 下,cx_freeze库用于将程序打包成 exe,会将一个变量 frozen 注入到 sys 中。

将其添加到入口文件的最上方即可

d49a74b2bae52c009665183b0b5e5b89.png

3. 打包成一个带调试窗口的exe

输入打包命令:

pyinstaller -F run.py
ba51db488597b41e65580c8334f80155.png

可以看到在dist目录下生成了run.exe可执行程序双击执行,可以看到会有一个黑色的背景框,这个类似windows下CMD窗口,可以显示print等打印出来的调试信息

a0ed7bb20670d157c14c5a784ab52e53.png

4. 打包成一个不带调试窗口的exe

输入打包命令:

pyinstaller -F -w run.py

同样会在dist目录下生成run.exe文件,双击执行

3912aa6985dadcc566fd688920e72e17.png

5. 打包成带图标的exe

可以看到上述两种情况打包,程序图标都是系统默认的图标,这次我们为run.exe加个自己的皮肤,需要创建一个icons文件夹,放进去自定义.ico图像,我这里是icon.ico

输入打包命令:

pyinstaller -F -w run.py -i D:/study/python/pyqt/pyqt5/demos/1-setup/icons/icon.ico

可以看到dist下的run.exe仍然是默认皮肤,这个是系统的问题,将run.exe拖到桌面,可以看到皮肤已经更新成功了。

87e89a36d04e6e12b01dd1146452a372.png

三、结语

(1) 调试

如果打包后程序提示仍然是无法运行,可以尝试在CMD命令窗口下直接运行程序,如果运行失败,控制台会打印提示信息,我之前遇到过用法错误导致运行不起来的问题,通过这种方式可以查看到具体的错误提示,修改后重新打包即可。

da89a5d75643e28e1e8dae198eb15754.png

作者:小驿

寄语:如果决定要出发,就不要把时间浪费在犹豫上!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值