【pyinstaller】python应用程序在win10打包qt5相关程序成exe

PyInstaller是一个Python工具,用于将程序打包成可在无Python环境的机器上运行的可执行文件,支持Windows、Linux、MacOS平台。文章详细介绍了如何安装PyInstaller和qt相关库,创建和修改.spec配置文件以包含所有必要的文件和依赖,以及如何使用这个配置文件生成最终的应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyInstaller简介

PyInstaller是一个用于将Python程序打包为可执行文件的工具。它可以将Python程序打包为Windows、Linux、MacOS等平台的可执行文件,并且可以自动解决Python程序所需的依赖关系,使得打包后的可执行文件可以在没有Python环境的机器上运行。
PyInstaller的主要功能有:

将Python程序打包为可执行文件。

自动检测并打包Python程序所依赖的库和模块。

支持多平台,可以将Python程序打包为Windows、Linux、MacOS等平台的可执行文件。

支持各种Python版本,包括Python2和Python3。

支持多种打包方式,可以将Python程序打包为单个可执行文件、发布包、安装包等。
在Windows下,使用PyInstaller将Python程序打包为exe的步骤如下:

安装PyInstaller及qt相关库

可以使用pip命令安装PyInstaller,打开命令行窗口,输入以下命令:

pip install pyinstaller

安装qt相关部件的代码:

pip install sip
pip install PyQt5 -i https://pypi.douban.com/simple
pip install PyQt5-tools -i https://pypi.douban.com/simpledu.cn/simple

最终版本如下:
1537 INFO: PyInstaller: 5.9.0
1538 INFO: Python: 3.9.0 (conda)
1540 INFO: Platform: Windows-10-10.0.19041-SP0

如果之前误删pip,可用下面的命令装回:

python -m ensurepip

.spec文件简介

PyInstaller生成的.spec文件是用于配置和定制打包过程的脚本文件。它包含了程序的打包信息,如程序的名称、版本、图标等信息,也包含了程序的依赖关系和打包方式等信息。
.spec文件可以手动编写,也可以通过命令行参数让PyInstaller自动生成。在生成.spec文件后,你可以手动编辑.spec文件来对打包过程进行更加详细的配置和定制,例如添加自定义的Python模块、设置程序的图标、指定程序的运行方式等。
使用.spec文件进行打包可以提高打包的灵活性和精度。你可以根据自己的需求对打包过程进行完全的控制,从而生成更加符合你需求的可执行文件。
切换至装有main.py文件的目录:

生成及修改spec文件

用命令pyi-makespec生成spec文件,当程序由多个.py文件组成,故pyi-makespec后跟的是入口py文件:

pyi-makespec main.py 

生成test.spec文件

注:如果想将程序的所有内容保存进一个exe文件,则使用命令:

pyi-makespec -F main.py 

生成test.spec文件。

main.spec文件内容如下:

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='main',
    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,
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='main',
)

将其中的:

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)

更改为:
其中出现的项目py文件所在路径,需要做\斜杠转义:

a = Analysis(
    ['main.py','demomain.py','image_rc.py','sleepAndLeave.py'],
    pathex=["C:\\Users\\104005066\\AlgorithmDemo"],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)

同时将:

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='main',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

中的 console=改为false。避免弹出黑色的命令行。

生成应用程序

spec文件配置好后,每次修改代码只需执行如下编译命令即可完成上述步骤:

pyinstaller main.spec

生成程序。

注意,如果使用anaconda环境,应把pyinstaller和pyqt装在一个环境内,以免发生找不到包的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颢师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值