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,
)

重新生成可执行文件

作者:栗子~~原文地址:https://blog.csdn.net/weixin_38316697/article/details/139987298

%s 个评论

要回复文章请先登录注册