淘先锋技术网

首页 1 2 3 4 5 6 7


一.前言

有朋友私信问我,如何把项目打包和如何减小打包后的文件体积。笔者参与创作过许多PyQt5项目,对打包项目到可执行exe程序还是有点心得体会的,本篇将详细介绍Pyinstaller打包PyQt5项目。看完本篇,您将会GET:1.如何正确地使用打包工具优雅地打包PyQt5项目2.如何缩小PyQt5项目打包后的文件体积。Let’s go !

二.准备工作&介绍

1.准备

1.pyinstaller
2.pipenv虚拟环境

2.介绍

1.pyinstaller

PyInstaller将Python应用程序冻结(打包)独立可执行文件中。它可以构建较小的可执行文件,它是完全多平台的,并且使用OS支持来加载动态库,从而确保完全兼容。

安装

pip install pyinstaller

笔者使用的版本是: 4.7

2.pipenv

pipenv是一个Python的包管理工具。它是requests作者Kenneth Reitz的作品,提供Python的各个版本间的管理,各种包管理。当你开始熟悉并且使用它的时候,你就知道它有点类似于前端的npm和yarn的味道。
它能自动为项目创建和管理虚拟环境。当你使用pipenv的时候,他会在项目根目录下创建Pipfile,用于记录包的版本信息。当你使用pipenv来安装包的时候,它会在项目根目录生成Pipfile.lock文件来锁定安装包的版本和依赖信息,避免构建错误。
安装

pip install pipenv

笔者使用的版本是: 2022.1.8

三.项目打包

1.准备

资源
这里以我的一个PyQt5项目为例演示打包PyQt5到一个文件,项目结构如下:
在这里插入图片描述
简单介绍一下项目:

1.CWidgets.py 自定义组件
2.engine.py 软件核心引擎文件,脱离了项目也能单独运行,不依赖GUI
3.qr_code_ui.py 主界面GUI,由qr_code_ui.ui使用ui工具转化而来
4.qr_GUI.py 软件主界面调度,也是本次GUI的入口,里面将上述文件调度起来
5.resource_rc.py 资源索引文件由resource_rc.qrc使用rcc工具转化而来对的

本次将上述五个文件打包到一个文件里

所有图标文件放在了icons文件夹下,使用qrc生成了这些图标文件的索引,文件结构如下图:
在这里插入图片描述
使用rcc工具将.qrc文件转化为.py文件即resource_rc.py以供项目引用。在需要使用资源文件的地方都这样写:

在这里插入图片描述

2.打包

1.打包参数

在这里插入图片描述

2.虚拟环境

打包前启动虚拟环境
在项目根目录打开cmd,启动pipenv虚拟环境

pipenv shell

在这里插入图片描述

本次把项目打包到一个文件并且加入图标ico.ico
中所以命令是:

pyinstaller -F -w -i ico.ico qr_GUI.py --hidden-import  CWidgets.py --hidden-import engine.py  --hidden-import  qr_code_ui.py --hidden-import resource_rc.py

在这里插入图片描述

打包完成,项目根目录会多出几个文件夹,其中dist文件夹为存放exe文件夹。本次虚拟环境打包文件大小54.1M
在这里插入图片描述

三.总结

本次演示了如何在虚拟环境下使用pyinstaller打包PyQt5项目。