python3GUI--PyQt5打包心得(二)nuitka、inno Setup(详细图文演示、附所有软件)

本文主要是介绍python3GUI--PyQt5打包心得(二)nuitka、inno Setup(详细图文演示、附所有软件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一.前言
  • 二.准备
    • 1.nuitka
      • 1.1介绍
      • 1.3项目地址
      • 1.3安装
    • 2.mingw64
      • 1.1介绍
      • 1.2下载安装
    • 3.Inno Setup
      • 1.1介绍
      • 1.2安装
  • 三.nuitka打包
    • 1.打包
    • 2.装mingw64
    • 3.装ccahe
    • 4.打包完成
  • 四.测试效果
  • 五.inno Setup制作安装软件
    • 1.配置新脚本
  • 六.总结
  • 七.参考


一.前言

上篇文章介绍了如何使用Pyinstaller在虚拟环境下打包PyQt5程序,本篇算是上篇的进阶,本篇将详细演示如何使用nuitka对PyQt5程序打包,使用inno Setup制作安装软件。
通过阅读本篇博文,你能够学会:
1.如何使用nuitka打包PyQt5程序并且提高代码执行效率
2.inno Setup的使用,将打包好的程序缩小体积制作成安装软件

二.准备

1.nuitka

1.1介绍

Nuitka是一个Python的替代编译器。它可以无缝地替代和扩展Python的解释和编译工作。截止2021年8月,支持Python2 (2.6, 2.7) 和 Python3 (3.3 - 3.9)版本 [4] 。它可以执行编译的代码,并能用很兼容的方式将目标代码一起编译。
开发者可以自由的使用所有的Python模块库和其他全部的第三方扩展库。Nuitka可以将Python代码编译成C级别的程序,并像CPython调用libpython一样去使用libpython库去执行编译后的程序。Nuitka的这些的优化工作旨在是为了能够避免Python执行过程中的在某个环节产生的不必要的开销。并旨在能够是消除一些不兼容性,虽然这是一种改进了的模式,但也不是每个标准Python的bug都能模拟,例如,提供更完整的错误信息。
在这里插入图片描述

1.3项目地址

https://github.com/Nuitka/Nuitka
在这里插入图片描述
可以看到star快到1W了

1.3安装

直接使用python的包管理工具安装即可:

pip install nuitka

在这里插入图片描述
输入下面命令可查看nuitak 版本

nuitak --version

在这里插入图片描述

2.mingw64

1.1介绍

MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能。
在这里插入图片描述

1.2下载安装

通过下面链接地址可下载
https://www.mingw-w64.org/downloads/
本次采用nuitka连带自动mingw64的,这里对下载、安装不做赘述。

3.Inno Setup

1.1介绍

这是一款老牌免费的 Windows 安装程序制作软件,最早发布于1997年。

Inno Setup用Delphi写成,其官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀。Inno Setup是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。
在这里插入图片描述

1.2安装

大家可去官网下载安装,但是不支持中文
https://jrsoftware.org/isinfo.php
本次笔者直接在网络上找到了汉化版,放在了这里

安装完之后你就得到了和我同款的inno Setup软件
在这里插入图片描述

三.nuitka打包

这里是重点
我们使用以下命令对我们的python代码进行打包

1.打包

从项目根目录打开windows资源管理器,按下shift+ctrl+鼠标右键打开power shell,输入下面命令(请自行将xxx.py替换为自己的程序入口文件)

nuitka --mingw64 --standalone --show-progress --show-memory --output-dir=out   --plugin-enable=pyqt5 --windows-disable-console  --windows-icon-from-ico=favicon.ico xxx.py

–mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)
–standalone 独立环境,这是必须的(否则拷给别人无法使用)
–windows-disable-console 没有CMD控制窗口
–output-dir=out 生成exe到out文件夹下面去
–show-progress 显示编译的进度,很直观
–show-memory 显示内存的占用
–enable-plugin=pyside6 打包pyside6模块的刚需
–plugin-enable=tk-inter 打包tkinter模块的刚需
–plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需
–plugin-enable=torch 打包pytorch的刚需
–plugin-enable=tensorflow 打包tensorflow的刚需
–windows-icon-from-ico=你的.ico 软件的图标
–windows-company-name=Windows下软件公司信息
–windows-product-name=Windows下软件名称
–windows-file-version=Windows下软件的信息
–windows-product-version=Windows下软件的产品信息
–windows-file-description=Windows下软件的作用描述
–windows-uac-admin=Windows下用户可以使用管理员权限来安装
–linux-onefile-icon=Linux下的图标位置
–onefile 像pyinstaller打包成单个exe文件
–include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
–include-module=复制比如when.py 这些以.py结尾的叫模块
–-include-package-data=包含给定软件包名称中的数据文件,等号后软件包名称。有的时候Nuitka并不能正确分析出一些Python软件包所需要使用的数据文件,在运行程序时提示FileNotFoundError等错误,此时就需要使用该选项。如:–include-package-data=ultralytics
–-include-data-files= 按文件名包含数据文件,等号后的格式为<SRC=DEST>。SRC指的是文件夹的路径,DEST指的是文件夹相对于打包结果的路径,其中DEST只能使用相对路径。如:–include-data-files=/Users/admin/Downloads/yolov5n.pt=./yolov5n.pt
-–include-data-dir= 包含文件夹中的数据文件,等号后的格式为<SRC=DEST>。使用方法与–include-data-files=相同。
–follow-import-to=MODULE/PACKAGE 如果使用该模块,请遵循该模块;如果是一个包,请遵循整个包。可以多次给定。默认为空。
提示:首次打包建议去掉–windows-disable-console,以保留控制台便于排查问题。

打包过程分三个阶段
打包过程下如图
在这里插入图片描述

2.装mingw64

当控制台询问是否安装gcc时, 输入yes进行安装(这里可能安装很慢,因为是访问github,可能需要魔法加速)
在这里插入图片描述

3.装ccahe

ccache(“compiler cache”的缩写)是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息, 比如头文件,这样就节省了通常使用 cpp 解析这些信息所需要的时间。如果某头文件中包含对其他头文件的引用,ccache会用那个文件的 cpp-parsed版本来取代include声明,不是真正去读取、理解并解释其内容,ccache 只是将最终的文本拷贝到文件中,使得它可以立即被编译。ccache是以空间换取速度,ccache非常适合经常make clean(或删除out目录)后重新编译的情况。

在这里插入图片描述

4.打包完成

在这里插入图片描述

四.测试效果

打包完成后会在项目根目录下的out目录下创建两个文件夹,其中,.dist中为打包程序根目录
在这里插入图片描述
我们找到我们的程序
在这里插入图片描述
单个文件大小约26M
双击运行
在这里插入图片描述
OK没问题,可以去制作安装软件了。

五.inno Setup制作安装软件

1.配置新脚本

打开inno Setup 创建一个新的空脚本文件
在这里插入图片描述
ctrl+n创建一个新项目
在这里插入图片描述
下一步
在这里插入图片描述
在这里配置一下软件信息
在这里插入图片描述
下一步
在这里插入图片描述
这里的主执行文件选择我们打包好的程序入口exe
选择添加文件夹,把刚才的.dist文件夹添加进来
在这里插入图片描述
在这里插入图片描述
下一步
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里选择好语言,我选择了中文和英文,软件能自动做国际化处理
在这里插入图片描述
在这里选择安装软件输出目录,我选择了桌面
设置好安装包icon
在这里插入图片描述
下一步,这里选择默认即可
在这里插入图片描述
之后会询问是否编译,我们选择是
在这里插入图片描述
这里自行选择,我选择了否
在这里插入图片描述
之后软件就会自动编译成安装文件,编译进度见左下角
在这里插入图片描述
待左下角提示完成
在这里插入图片描述
我们的安装文件就生成好了。大小只有30M哦
在这里插入图片描述

六.总结

本次详细演示了如何使用nuitka对我们的PyQt5程序进行打包,使用inno Setup工具将打包后的程序制作成安装程序,极大地减少了软件的占用体积,另外nuitka将py代码二进制的pyd文件提高了软件运行效率,防止了反编译,提高了整体软件的安全性,想多了解nuitka的朋友我会在下方贴几个地址,可以进行相关了解。

在这里插入图片描述

七.参考

mingw64
Nuitka
想了解Python源代码加密吗?现总结如下5大加密混淆手段!
Python与模具
Python 打包工具 Nuitka 入门指南

这篇关于python3GUI--PyQt5打包心得(二)nuitka、inno Setup(详细图文演示、附所有软件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389190

相关文章

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的