python-如何将Python 脚本打包成可执行文件(exe)

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


如何将Python 脚本打包成可执行文件(exe)

1. 测试python脚本

python-登录界面-demo

2. 安装 PyInstaller

pip install pyinstaller
请添加图片描述

3. 创建 PyInstaller spec 文件

pyi-makespec --onefile your_script.py

在这里插入图片描述
生成15-GUI-登录界面.spec文件
在这里插入图片描述

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


a = Analysis(
    ['15-GUI-登录界面.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='15-GUI-登录界面',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

解析:
Analysis 部分:

a = Analysis(
    ['15-GUI-登录界面.py'],  # 需要打包的主脚本
    pathex=[],               # 包含脚本的搜索路径,通常是当前目录
    binaries=[],             # 需要打包的二进制文件列表
    datas=[],                # 需要打包的数据文件列表
    hiddenimports=[],        # 需要隐藏导入的模块列表
    hookspath=[],            # Hook 文件的搜索路径
    hooksconfig={},          # Hook 文件的配置
    runtime_hooks=[],        # 运行时钩子
    excludes=[],             # 需要排除的模块列表
    noarchive=False,         # 如果为 True,不打包成一个单独的文件
    optimize=0,              # 优化级别(0, 1, 2)
)

参数解释:
[‘15-GUI-登录界面.py’]:主脚本文件。
pathex:搜索路径,PyInstaller 在这些路径中查找导入的模块。可以指定多个路径。
binaries:额外的二进制文件,通常是 DLL 或 SO 文件,需要包含在打包中。
datas:数据文件列表,如图像、配置文件等,需要包含在打包中。
hiddenimports:PyInstaller 未能自动检测到的模块列表。
hookspath:指定钩子文件的路径,钩子文件是用来处理模块的特殊导入情况的。
hooksconfig:钩子配置文件。
runtime_hooks:运行时钩子,程序启动时执行的钩子。
excludes:需要排除在打包之外的模块列表。
noarchive:如果为 True,则不将所有内容打包到一个单独的 .pyz 文件中。
optimize:优化级别,0(无优化)、1(基本优化)、2(更高优化)。

PYZ 部分:

pyz = PYZ(a.pure)

这部分创建一个 .pyz 文件(包含所有纯 Python 模块)。

EXE 部分:

exe = EXE(
    pyz,                     # PYZ 对象
    a.scripts,               # 分析得到的脚本文件
    a.binaries,              # 分析得到的二进制文件
    a.datas,                 # 分析得到的数据文件
    [],                      # 其他需要包含的文件列表
    name='15-GUI-登录界面',  # 生成的可执行文件名称
    debug=False,             # 如果为 True,生成的可执行文件将在调试模式下运行
    bootloader_ignore_signals=False,  # 启动程序忽略信号
    strip=False,             # 如果为 True,从生成的文件中去掉符号表和调试信息
    upx=True,                # 如果为 True,使用 UPX 压缩可执行文件
    upx_exclude=[],          # 不使用 UPX 压缩的文件列表
    runtime_tmpdir=None,     # 在运行时解压临时文件的目录
    console=True,            # 如果为 True,生成的可执行文件将在控制台模式下运行
    disable_windowed_traceback=False,  # 禁用窗口化的回溯
    argv_emulation=False,    # 模拟命令行参数传递(仅 MacOS 有效)
    target_arch=None,        # 目标架构
    codesign_identity=None,  # 代码签名身份(仅 MacOS 有效)
    entitlements_file=None,  # 权限文件(仅 MacOS 有效)
)

参数解释:
pyz:前面创建的 PYZ 对象。
a.scripts:分析对象中的脚本文件。
a.binaries:分析对象中的二进制文件。
a.datas:分析对象中的数据文件。
name:生成的可执行文件名称。
debug:如果为 True,生成的可执行文件将在调试模式下运行。
bootloader_ignore_signals:如果为 True,启动程序将忽略信号。
strip:如果为 True,从生成的文件中去掉符号表和调试信息。
upx:如果为 True,使用 UPX 压缩可执行文件。
upx_exclude:不使用 UPX 压缩的文件列表。
runtime_tmpdir:在运行时解压临时文件的目录。
console:如果为 True,生成的可执行文件将在控制台模式下运行。
disable_windowed_traceback:禁用窗口化的回溯。
argv_emulation:模拟命令行参数传递(仅 MacOS 有效)。
target_arch:目标架构。
codesign_identity:代码签名身份(仅 MacOS 有效)。
entitlements_file:权限文件(仅 MacOS 有效)。
进一步定义:
你可以根据需要进一步自定义 spec 文件。例如,如果你想添加数据文件,可以这样修改:

a = Analysis(
    ['15-GUI-登录界面.py'],
    pathex=[],
    binaries=[],
    datas=[
        ('data/logConfig.ini', 'data'),  # 添加数据文件
    ],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)

4. 生成可执行文件

pyinstaller your_script.spec
在这里插入图片描述
在这里插入图片描述
测试:
双击:
在这里插入图片描述
测试成功。

4.1 去掉黑框

需要将console参数设置为False

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


a = Analysis(
    ['15-GUI-登录界面.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='15-GUI-登录界面',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

重新生成可执行文件
在这里插入图片描述

  • 55
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栗子~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值