Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)

简介: 本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。

方式一:nuitka

打包的话,用nuitka更适合,对PySide支持更好。压缩后仅15MB左右。

pip install nuitka zstandard
# PyQt 26MB ==> 14.9MB
python -m nuitka --onefile --windows-disable-console --enable-plugin=pyqt6 <your_app>.py
# PySide 34MB ==> 16.8MB
python -m nuitka --onefile --windows-disable-console --enable-plugin=pyside6 --follow-import-to=need --output-dir=output <your_app>.py
pip install pyinstaller
pyinstaller -D -i "5.ico" base_camera.py

方式二:pyinstaller

第一步:
安装环境

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

打包前:可使用upx减少打包体积
我们需要先下载UPX执行文件,可以自己去搜或者在 官网 里面下载自己想要的版本,下载下来的是一个压缩包,我们只需要解压后把里面的upx.exe文件复制到pyinstaller.exe同个文件夹(应该是Scripts文件夹)内即可。

pyinstaller默认会从执行目录里搜索upx执行文件,如果找到upx,会对生成的可执行文件进行压缩。现在我们重新执行pyinstaller打包命令,如果像下图这样就说明使用upx配置成功
在这里插入图片描述
第二步:

打包后,将源码打包成一个完整的可执行文件,有2中方式:

  • pyinstaller xxx.py,生成执行文件,附带一个文件夹
  • pyinstaller -F xxx.py, 合成一个,单个文件在其他机器上可运行

pyinstaller只是将代码打包成本平台的执行文件,不会交叉编译成其他平台程序的。有的blog写的ubuntu打包成exe,但这就是一个说法,不是真的打包成windows平台的.exe文件。

pyinstaller -F main.py --hidden-import PySide6.QtSvg --paths D:\ProgramData\Anaconda3\envs\pyside6\Lib\site-packages\shiboken6\shiboken6.abi3.dll

也可以直接使用spec文件打包,在终端运行pyinstaller run.spec

# run.spec
# -*- mode: python ; coding: utf-8 -*-

a = Analysis(
    ['run.py'],
    pathex=['shiboken6.abi3.dll'],
    binaries=[],
    datas=[('files/*', 'files/')],  # 将同级文件夹下的所有文件打包到可执行文件的根目录
    hiddenimports=['PySide6.QtSvg'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=['ultralytics'],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='run',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['logo.ico'],
)
coll = COLLECT(
    exe,
    a.binaries,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='run',
)

在这里插入图片描述

执行完成后在目录下会出现以下3种文件:

  1. build 文件夹是存放打包时临时文件用的(没用)
  2. dist 文件夹存放了打包好的应用(其中的exe文件就是可执行程序)
    • 里面的_internal是包含的所有依赖,如果出现依赖未找到,就去指定的环境下拷贝进来。
  3. xxxxx.spec 内容是 PyInstaller 根据我们的命令行生成的打包参数

最后记得把一些资源(如json文件、图片、一些项目所需的文件夹、图标、xml等),复制到打包好的exe文件目录下,或复制到之前在代码中编写的相对目录位置下。

打包参数说明

-F, --onefile:打包一个单个文件,产生一个文件用于部署。

-D, --onedir:打包多个文件,产生一个目录用于部署。

-K, --tk:在部署时包含 TCL / TK。

-a, --ascii:不包含编码,在支持 Unicode 的 python 版本上默认包含所有的编码。

-d, --debug:产生 debug 版本的可执行文件。

-w, --windowed, --noconsole:使用 Windows 子系统执行,当程序启动的时候不会打开命令行(只对 Windows 有效)。

-c, --nowindowed, --console:使用控制台子系统执行(默认),当程序启动的时候会打开命令行(只对 Windows 有效)。

-i, --icon=<file.ico>:将 file.ico 添加为可执行文件的资源,改变程序的图标(只对 Windows 系统有效)

方式三:auto-py-to-exe

安装环境

进入到虚拟环境
pip install gevent-websocket
pip install setuptools==57.5.0  
pip install greenlet==1.1.3 gevent==22.8.0
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

在自己的文件夹里,下载auto-py-to-exe
git clone https://github.com/brentvollebregt/auto-py-to-exe.git
python setup.py install

安装完成后,在指定虚拟环境中输入auto-py-to-exe,即可打开。
在这里插入图片描述
在这里插入图片描述

目录
相关文章
|
1月前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
114 7
|
2月前
|
Python
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
本文提供了一份详细的PySide6与VSCode联动的操作指南,包括安装配置VSCode、安装必要的扩展、配置扩展以及编辑和运行PySide6项目。文中还提到了相关工具如uic.exe、rcc.exe和designer.exe的用途,并提供了进一步学习的资源。
446 1
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
|
2月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
76 1
Python实用记录(十三):python脚本打包exe文件并运行
|
3月前
|
Python
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
15天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
96 80
|
21天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
133 59