Pyinstaller 打包pyqt,paddle经验总结(保姆级超详细讲解避坑必看)

本文详细介绍了如何使用PyInstaller将Python程序打包成可执行文件,包括单文件和多文件应用的打包方法,以及如何设置图标和控制台窗口。此外,还讲解了使用UPX工具对生成的EXE文件进行压缩,以减小文件大小。通过实例展示了汇率计算器、登录界面和动物分类软件的打包过程,并解决了打包过程中可能出现的问题,如图标修改、文件路径问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文以打包一个pyqt汇率计算器和一个pyqt+paddle的模型为例进行讲解并介绍了upx框架的使用

Pyinstaller 打包程序,生成可执行文件

4.5.1 Pyinstaller 介绍及安装

1)基本介绍

 在创建了独立应用(自包含该应用的依赖包)之后,还可以使用 PyInstaller

Python 程序生成可直接运行的程序,这个程序就可以被分发到对应的

Windows Mac OS X 平台上运行。

2)安装

 Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller

块。强烈建议使用 pip 在线安装的方式来安装 PyInstaller 模块,不要使用离线

 包的方式来安装,因为 PyInstaller 模块还依赖其他模块,pip 在安装 PyInstaller

 模块时会先安装它的依赖模块。

命令:

pip install pyinstaller

  PyInstaller 模块安装成功之后,在 Python 的安装目录下的 Scripts(

 意,每个人的不一样,去找你自己的:D:\Python\Python36\Scripts) 目录下会增

加一个 pyinstaller.exe 程序,接下来就可以使用该工具将 Python 程序生成 EXE

程序了。

4.5.2 Pyinstaller 的使用方法及常用参数介绍

1)使用方法

PyInstaller 工具的命令语法如下:

pyinstaller 选项 Python 源文件

不管这个 Python 应用是单文件的应用,还是多文件的应用,只要在使用

 pyinstaller 命令时编译作为程序入口的 Python 程序即可。

 PyInstaller 工具是跨平台的,它既可以在 Windows 平台上使用,也可以在 Mac

OS X 平台上运行。在不同的平台上使用 PyInstaller 工具的方法是一样的,它们

 支持的选项也是一样的。

2 pyinstaller 的参数使用介绍

常用参数介绍:

-D,–onedir:创建一个文件夹包含exe 文件(默认)

-F,–onefile:打包之后只会生成一个exe 的文件

-c,–console,–nowindowed:使用控制台窗口(默认)

-w,–windowed,–noconsole:使用窗口显示

-i:设置打包exe 的图标,默认使用的是Python 的图标

4.5.3 单个文件的打包

重要提醒:打包前,关闭所有的杀毒软件、卫士等等。

使用以下程序,尝试打包:

import cv2

img = cv2.imread("logo.jpg")

cv2.imshow("logo",img)

cv2.waitKey()

这个程序展示了使用 OpenCV 来读取图片然后显示,编辑完成之后进入到该目录下,运行

pyinstaller -F exmple.py,看到如下信息表示打包成功:

 

在项目目录下发现多了 dist build 两个目录和一个*.spec 的文件。

 

打开 dist 目录,可以发现下面多了一个 example.exe 的可执行文件,双击运行发现并没有

显示图片,此时我们需要将 logo.jpg 拷贝到当前目录下,然后再运行 exe 程序就可以看到

如下结果

 

如果不想显示控制台打包的时候可以加上-w 参数,pyinstaller -F -w example.py,此时打

包生成的 exe 程序执行时不会出现控制台窗口。

修改exe 的图标

默认使用的图标如下

 

如果想更换图标,可以使用:

ico 下载网址:https://www.easyicon.net/

pyinstaller -F -w -i=panda.ico example.py通过-i 参数可以指定 ico 的图标,如果生成的 exe 的图标没有变化试着将 ico 图标文件拷贝

exe 的相同目录下。

pyInstaller 一般安装在 python 安装路径/Script 下面

pyinstaller -F xxx.py 打包 exe 命令,但是会有黑窗口

pyinstaller -F -w xxx.py 去除黑窗口

另外,建议每次打包结束后,再进行一次全新打包时,将之前 proj 目录下的:

__pycache__ 文件夹

build 文件夹

dist 文件夹

******.spec 文件 *****为打包的文件名)

上述四个全部删除后再重新打包,以免出问题(当然,不是删了一定没问题,也

不是不删一定有问题~~~)。

4.5.4 增加压缩减小可执行文件的方法UPX

1) 未增加 upx 打包

UPX 是一种适用于大多数操作系统的免费实用程序。UPX 压缩可执行文件 和库,使它们更小。

 UPX 适用于大多数操作系统,可以压缩大量可执行文件格式。有关下载的

信息,请参阅 UPX 主页,以及支持的可执行格式列表。

 增加 UPX 之前,打包的报文如下:

 

关注发现: UPX is not available.

说明程序中没有装在 UPX。需要配置 UPX 才能正常工作。

这种情况下打包的结果,以上例的大小为例:(50MB 左右)

 

2) 下载 UPX

 

到官网 https://upx.github.io/ 下载了 UPX(我的是 Window 64 版本), 下载下 来是一个压缩包

Github 官网经常上不去,多试几次~~~

(2) 解压得到 upx.exe 文件

(3) exe pyinstaller , C:\ProgramData\Anaconda3\envs\Paddle37\Scripts

 

(4 然后再重新运行 pyinstaller 命令就会提示: UPX is available

 

5 重新打包后的大小 30MB 左右)

 

4.5.5 尝试将各个案例进行打包

1)汇率换算器的打包

 

打包完效果:

 

2)登录界面打包 软件执行后效果:

 

3)动物分类软件打包

可能遇到的错误:

解决方案:

更新 hook 文件 我的路径:

C:\ProgramData\Anaconda3\envs\Paddle37\Lib\site-packages\PyInstaller\hooks (主要关注你的环境位置,这里 Paddle37 是我的虚拟环境名)

增加一个文件 hook-paddle.py 文件

文件内容:

# hook-paddle.py

from PyInstaller.utils.hooks import collect_data_files

datas = collect_data_files("paddle")

保存好即可使用(已经尝试,貌似不需要一个 hook-paddlehub.py 的文件,但是

在调用其他模块时,不排除需要增加其他模块的 hook 文件,请根据自己的使用

情况决定)。

打包成执行程序,并运行

其他错误

1 路径有中文

2 路径有其他标点符号(包括空格等)

解决方法:

针对 1):更换无中文路径,全英文,且加入空格等;

结果:解决,软件正常运行。

针对 2):第一次尝试:去掉其他符号并用中文路径;

结果:软件无法正常运行,问题仍然一样。

### PyQt 应用程序打包教程 PyQt 是一种用于创建图形用户界面 (GUI) 的强大工具集[^2]。为了将基于 PyQt 开发的应用程序分发给最终用户,通常需要将其打包成独立的可执行文件。以下是关于如何使用 `fbs` 工具来完成这一过程的具体说明。 #### 使用 fbs 打包 PyQt 应用程序 `fbs` 是一个专门设计用来简化 PyQt 和 PySide 应用程序打包流程的框架。它能够自动生成项目结构并处理复杂的依赖关系管理。下面是一个典型的例子: ```python from fbs_runtime.application_context.PyQt5 import ApplicationContext from PyQt5.QtWidgets import QMainWindow import sys if __name__ == '__main__': appctxt = ApplicationContext() # 实例化 ApplicationContext window = QMainWindow() window.resize(250, 150) window.setWindowTitle("Example App") # 设置窗口标题 window.show() exit_code = appctxt.app.exec_() # 启动事件循环 sys.exit(exit_code) ``` 上述代码展示了如何通过 `ApplicationContext` 来初始化 PyQt 应用程序[^1]。接下来可以按照以下方式配置和构建应用。 #### 配置与构建步骤 1. **安装要的库** 确保已安装 `fbs` 及其相关依赖项: ```bash pip install fbs ``` 2. **初始化项目** 运行命令以生成基础目录结构: ```bash fbs startproject ``` 3. **修改源码** 编辑位于 `src/main/python/` 下的入口脚本(如上所示),实现所需功能。 4. **测试运行环境** 在开发环境中验证应用程序是否正常工作: ```bash fbs run ``` 5. **冻结应用程序** 构建独立版本供部署使用: ```bash fbs freeze ``` 6. **生成安装程序(可选)** 如果希望进一步提供易于使用的安装体验,则可以通过如下指令制作安装包: ```bash fbs installer ``` 以上方法适用于大多数场景下的 PyQt 应用发布需求。对于更复杂的需求,比如集成多媒体支持或者特定硬件交互等功能模块时,可能还需要额外调整设置或引入第三方扩展库[^3]。 #### 注意事项 - 当前示例仅展示了一个简单的 GUI 结构;实际开发过程中应考虑异常捕获、资源加载等因素。 - 不同操作系统间可能存在兼容性差异,请务针对目标平台分别测试成品表现。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaofeimax

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值