文章目录
- 一.前言
- 二.准备工作&介绍
- 1.准备
- 2.介绍
- 1.pyinstaller
- 2.pipenv
- 三.项目打包
- 1.准备
- 2.打包
- 1.打包参数
- 2.虚拟环境
- 三.总结
一.前言
有朋友私信问我,如何把项目打包和如何减小打包后的文件体积。笔者参与创作过许多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项目。