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

文章目录

  • Python 打包工具:Nuitka、PyInstaller 和 Auto-py-to-exe 详解
    • 方式一:Nuitka
      • 安装与使用
    • 方式二:PyInstaller
      • 安装环境
      • 打包方式
      • 使用 spec 文件打包
      • 打包后文件说明
      • 打包参数说明
    • 方式三:Auto-py-to-exe
      • 安装环境

✅⚠️▶️➡️⭐❄️✅⚠️▶️➡️⭐❄️✅⚠️▶️➡️⭐❄️✅⚠️

Python 打包工具:Nuitka、PyInstaller 和 Auto-py-to-exe 详解

在 Python 开发项目完成后,常常需要将代码打包成可执行文件,以便在不同环境中方便地运行。本文介绍了三种常用的打包工具:Nuitka、PyInstaller 和 Auto-py-to-exe,并详细说明了它们的使用方法。

方式一:Nuitka

Nuitka 是一个将 Python 代码编译为 C 代码,然后再编译为可执行文件的工具。它对 PySide 有较好的支持,并且打包后的文件体积相对较小。

安装与使用

首先,需要安装 Nuitka 和 zstandard:

pip install nuitka zstandard

对于 PyQt6 项目打包:

python -m nuitka --onefile --windows-disable-console --enable-plugin=pyqt6 <your_app>.py

对于 PySide6 项目打包:

python -m nuitka --onefile --windows-disable-console --enable-plugin=pyside6 --follow-import-to=need --output-dir=output <your_app>.py

通过上述命令,Nuitka 可以将 Python 应用打包成单个文件,并且可以根据需要禁用控制台窗口,启用相应的插件。压缩后文件大小仅 15MB 左右,相比原始的依赖体积有显著减小。

方式二:PyInstaller

PyInstaller 是另一个广泛使用的 Python 打包工具,它可以将 Python 脚本及其所有依赖打包成一个或多个可执行文件。

安装环境

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

为了进一步减小打包体积,可以使用 UPX 工具。从 官网 下载 UPX 执行文件,解压后将 upx.exe 文件复制到 pyinstaller.exe 所在的文件夹(通常是 Scripts 文件夹)。这样,PyInstaller 在打包时会自动使用 UPX 对生成的可执行文件进行压缩。

打包方式

PyInstaller 有两种主要的打包方式:

  • 生成执行文件附带文件夹
pyinstaller xxx.py

这种方式会生成一个包含可执行文件和相关依赖的文件夹。

  • 合成单个可执行文件
pyinstaller -F xxx.py

这种方式将所有依赖打包到一个文件中,生成的单个文件可以在其他机器上直接运行。

需要注意的是,PyInstaller 只是将代码打包成本平台的执行文件,不支持交叉编译。例如,在 Ubuntu 上不能直接打包成 Windows 平台的 .exe 文件。

使用 spec 文件打包

除了命令行方式,也可以使用 spec 文件进行打包。例如,对于 run.py 文件,可以创建如下的 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',
)

然后在终端运行 pyinstaller run.spec 即可完成打包。

打包后文件说明

执行打包命令后,会在目录下生成以下文件:

  • build 文件夹:存放打包时的临时文件,通常可以删除。
  • dist 文件夹:存放打包好的应用,其中的 exe 文件就是可执行程序。_internal 文件夹包含了所有依赖,如果出现依赖未找到的情况,可以从指定环境中拷贝。
  • xxxxx.spec 文件:包含了 PyInstaller 根据命令行生成的打包参数,可以根据需要进行修改。

打包参数说明

  • -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=:将指定的图标文件添加为可执行文件的资源,改变程序图标(仅对 Windows 系统有效)。

方式三:Auto-py-to-exe

Auto-py-to-exe 是一个基于 PyInstaller 的图形化工具,使得打包过程更加简单直观。

安装环境

首先进入虚拟环境,安装相关依赖:

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 即可打开图形化界面。

通过以上三种工具,我们可以根据项目的具体需求选择合适的打包方式,将 Python 代码打包成可执行文件,方便在不同环境中运行和部署。
✅⚠️▶️➡️⭐❄️✅⚠️▶️➡️⭐❄️✅⚠️▶️➡️⭐❄️✅⚠️

你可能感兴趣的:(实用操作总结,python,pyqt,开发语言)