pyinstaller打包PyQt程序 + 制作安装包

2023-05-16

打包发布PyQt5程序,制作安装文件。以自己的密码管理器为例 ~

用到的工具:

  • 平台: Windows10
  • python 3.7.6(安装好所需的包)
  • pyinstaller
  • upx(可选,用于压缩可执行文件)
  • Inno Setup 6

打包可执行文件:

先安装pyinstaller

pip install pyinstaller

打包时最好切换到主程序脚本所在的目录下,不然会出现import路径问题。例如我的是D:\PasswordManager,主程序所在文件main.py。启动pyinstaller

# 多文件
pyinstaller -D main.py
# 单个可执行文件
pyinstaller -F main.py

在当前目录下dist文件夹里就是打包好的可执行程序。这个时候运行会出现一个控制台,如果出现错误会在控制台中打印出来,可以用于测试;如果测试没问题就可以去掉控制台窗口(使用-w命令):

pyinstaller -D -w main.py

给可执行文件添加图标(使用-i 命令):

pyinstaller -D -w -i icon.ico main.py

最后得到的dist文件夹如下,大小90.5MB,对于一个功能简单的小程序而言还是比较大的

在这里插入图片描述

压缩可执行文件(可选,不需要压缩这段跳过)

使用upx压缩可执行文件。注意刚刚pyinstaller打包的过程中输出日志中有UPX is not available,说明没有安装upx,参考安装upx。
安装之后再次打包,dist文件夹大小39.1 MB。这个时候尝试启动程序出现错误:
在这里插入图片描述
参考,报错中有一句:Qt platform plugin could be initialized,跟Qt platform plugin有关,注意到在dist\PasswordManager\PyQt5\Qt\目录下有一个plugins目录,里面是一些动态链接库,应该跟这个有关。
解决方法:
先关掉upx,也就是在pyinstaller后加上参数--noupx,重新运行打包一次,复制一份dist\PasswordManager\PyQt5\Qt\plugins目录;重新打开upx,再次打包运行,用未压缩版的plugins目录替换压缩版的,测试后可以正常运行。
如果觉得这样麻烦还可以直接关掉upx,使用upx手动压缩

upx *.dll
upx *.exe

继续减小文件体积

观察发现打包目录下其实有许多我并未用到的Qt库

在这里插入图片描述
比如Qt5DBusQt5Qmlopengl的库等等,尝试删除这些库,程序依然可以正常运行;

在这里插入图片描述
上面两个文件夹似乎只是一些输出信息,删除后不影响程序运行,此外还有dist\PasswordManager\PyQt5\Qt\translations文件夹中的.qm文件,用于多语言版本软件更改语言,可以按需保留(我是全都删了)。此时dist文件夹大小26.4MB,仅为最初的1 / 3;如果不用upx应该是60MB左右(如果拿C++ Qt应该可以压缩到10MB以下,不过拿pyqt就图快)。

制作安装程序

下载inno setup,并且安装、汉化(这个可选,汉化是汉化用户安装向导的界面),打开之后选择新建脚本,顺着向导一路填下去即可,最后生成一个脚本,点击编译即可得到安装文件。注意,生成的脚本里面有一行『AppId』,这个需要记下
在这里插入图片描述
后续版本的软件中填写这个AppId,安装文件在安装时会默认覆盖之前的版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyinstaller打包PyQt程序 + 制作安装包 的相关文章

  • 黑苹果OC配置工具OpenCore Configurator 2.42.0.0中文版

    OpenCore Configurator 一款黑苹果OC引导配置工具 xff0c 通过简化的图形界面帮助您为 OpenCore EFI 引导加载程序创建自定义配置文件 OC 是 OpenCore 的简称 xff0c 说起 OpenCore
  • 为什么无法在 Adobe XD 中导入或导出文件?

    Adobe Experience Design 是UI设计人员必备的图形化界面UX设计工具 xff01 在使用过程中用户会反馈无法导入或导出文件 xff1f 本文为 Adobe XD 中出现的文件导入和导出问题提供了解决方案 xff0c 并
  • 如何安装ArchLinux

    本文基于ArchLinux xff08 https www archlinux org xff09 Current Release 2013 08 01的ISO写的安装教程 xff01 ISO下载地址 xff1a http mirrors
  • 从源码分析HashMap集合之属性(一)

    注 xff1a 笔者所使用的jdk为1 8 xff0c 因本人水平有限 xff0c 难免会有错误 xff0c 请批评指正 xff0c 弥补不足 xff0c 多谢 xff0c 另转载请注明出处 我们首先来看下一下HashMap类 public
  • 审批流程设计方案-介绍(一)

    10年有幸接触了HP的一套PAAS平台 xff0c 里面有一套关于工作流 审批流的设置模块 公司现在做的这个项目也有用到审批流 这中间磕磕碰碰的遇到不少问题 xff0c 但最后也小有收获 xff0c 趁着周末闲暇时间 xff0c 把一些细节
  • 怎么解压system.img文件

    system img是官方的刷机包镜像 也就是安卓手机的系统 所有apk文件都在system img里面 包括系统app文件 有时候精简误删了app 那么如果不重新刷机就没有办法恢复了吗 xff1f 错 xff01 只有把系统文件重新放回去
  • 五、二叉搜索树的第k个结点

    一 题目描述 给定一棵二叉搜索树 xff0c 请找出其中的第k小的结点 例如 xff0c xff08 5 xff0c 3 xff0c 7 xff0c 2 xff0c 4 xff0c 6 xff0c 8 xff09 中 xff0c 按结点数值
  • Manjaro下安装和美化i3wm,以及相关软件配置

    Manjaro下安装及美化i3wm 由于本人是在vmware workstation pro15下安装的Manjaro Xfce桌面 xff0c 所以可能与部分用户配置步骤和配置软件并不完全相同 xff0c 具体情况大家可以去Arch Wi
  • ubantu中apt-get安装的依赖全部打包

    最近在适配国产化系统 xff0c 其中有arm和x86的 xff0c 虽然是国产化系统 xff0c 其实只是Ubuntu的包装罢了 xff1b 好不容易将海光型号的适配完毕 xff0c 就要进行测试 xff0c 但是这些海光环境并没有进行总
  • ubuntu linux 配置PATH JAVA PATH(解决双击不能启动eclipse的问题)

    我是下载了jdk 放在 opt下 于是我在 etc bash bashrc里添加 xff1a export JAVA HOME 61 opt jdk1 7 0 06 export PATH 61 PATH opt jdk1 7 0 06 b
  • Linux vi/vim命令大全

    参考资料 xff1a https www runoob com linux linux vim html 1 什么是vi vim 所有的 Unix Like 系统都会内建 vi 文书编辑器 xff0c 其他的文书编辑器则不一定会存在 但是目
  • Linux中动态库(共享库)的制作与使用

    0 库的基本概念 见博客 xff1a Linux中静态库的制作与使用 0 1 动态库的工作原理 首先回忆一下静态库 xff0c 使用静态库 xff0c 在GCC进行链接时 xff0c 会把静态库中代码打包到可执行程序中 但是使用动态库 xf
  • Linux中的source命令(.命令)的用法

    参考 xff1a https blog csdn net LEON1741 article details 81944879 1 使用格式 其使用格式如下 xff0c 其中filename必须是可执行的脚本文件 span class tok
  • 一个简单的游戏源代码

    一个简单的游戏源代码 作者 xff1a 陈跃峰 出自 xff1a http blog csdn net mailbomb 实现一个简单的翻牌游戏 xff0c 每次最多翻开两个数字 xff0c 如果数字相同则消失 xff0c 否则两个数字不显
  • 数据库事务图解

    一 基本概念 xff08 from baidu xff09 数据库事务 Database Transaction xff0c 是指作为单个逻辑工作单元执行的一系列操作 xff0c 要么完全地执行 xff0c 要么完全地不执行 事务处理可以确
  • Java新手必读

    Java 新手必读 1 学习 Java 学什么 xff1f a Java 语法基础 xff1a 如基本数据类型 流程控制 数组等等 b 面向对象的概念 xff1a 理解类和对象的概念等等 c 开发工具 xff1a Jbuilder Ecli
  • Java编程那些事儿3——你适合学习程序设计吗?

    Java编程那些事儿3 你适合学习程序设计吗 xff1f 作者 xff1a 陈跃峰 出自 xff1a http blog csdn net mailbomb 程序设计是一个技术活 xff0c 所以不是适合所有的人 现在很多人听说程序设计人员
  • J2ME资源:各厂商SDK和模拟器下载地址

    现在支持 Java 的手机厂商很多 xff0c 现将常用的手机厂商 SDK 和下载地址说明一下 xff1a 1 Nokia Nokia 不愧为手机行业的老大 xff0c 对于 j2me 的支持也是一流的 xff0c 有专门的网站提供 SDK
  • 陈跃峰的个人简历

    简 历 基 本 信 息 姓 名 xff1a 陈跃峰性 别 xff1a 男 出生日期 xff1a 1980年01月23日居 住 地 xff1a 郑州市 工作年限 xff1a 五年以上 户 口 xff1a 河南 目前年薪 xff1a 8 10万
  • NokiaS40和S60开发平台1.0已知问题(翻译)

    NokiaS40 和 S60 开发平台 1 0 已知问题 翻译 作者 xff1a 陈跃峰 出自 xff1a http blog csdn net mailbomb 1 Nokia3300 不支 MMA 声音处理 类库 2 Image get

随机推荐