Python程序封装为exe应用方法

本文最后更新于:2025年2月7日 晚上

1、背景

在我们执行python脚本的过程中,每次执行都需要在命令面板执行一段指令,如python timecalc.py。通过指令执行的方式,利于动态修改脚本检查效果,方便调试。当我们脚本的功能都已经实现完成后,那么在windows PC中,考虑将其封装为exe程序,之后每次运行,只需要双击应用即可,也无需执行命令。

2、exe封装过程

2.1 原始应用

基于时间计算器timecalc.py进行封装,基本功能,计算毫秒级别时间序列及时间戳的差值,界面如下,执行python timecalc.py运行脚本:

image-20250206143701436

image-20250206142614691

2.2 Pyinstaller封装环境准备

Pyinstaller为封装python脚本的三方库,通过pip进行安装:

1
pip install pyinstaller

如果在配置文件中修改过PIP镜像源为清华PIP镜像源,可能会出现403断联情况(实际为本机IP被pip清华源封禁,无此问题可忽略,正常下载即可):

image-20250117105212582

另外可使用-i参数在安装时指定官方镜像源下载:

1
2
# 后接-i参数,指定镜像源
pip install pyinstaller -i https://pypi.python.org/simple

安装成功如下,安装成功会出现Successfully关键字:

image-20250117105319506

安装完成,可以直接在控制台执行pyinstaller验证安装,正常会返回以下说明内容:

image-20250117105804552

2.3 Pyinstaller封装py程序

拷贝需要打包的python程序地址:选中python程序文件,shift+鼠标右键,点击复制文件地址

image-20250206143255550

1
2
# 后接python程序实际绝对路径
pyinstaller "E:\浏览器下载文件\timecalc.py"

执行后即开始打包过程:

image-20250117110151311

出现‘completed successfully’字段即打包完成:

image-20250117110127219

按照此方法执行完成后会在同路径下生成dict文件夹、build文件夹、timecalc.spec文件

image-20250206144234747

最后只需要dist路径下的exe程序即可:

image-20250206144347407

运行之后,效果是和执行脚本一样:

image-20250206144504946

注意: 此方法存在的缺点就是,exe应用执行时需要和_internal路径在一块,这个目录下存放的为依赖文件,分开存放的话,程序会执行失败。

2.4 Pyinstaller无依赖封装py程序

  • 使用-F参数,打包时不生成依赖文件:
1
2
# 无依赖文件打包
pyinstaller -F .\timecalc.py

image-20250206145321037

exe文件可以任意搬运,但每次执行,都会出现控制台运行框。

  • 使用-w参数,去除控制台:
1
2
# 无依赖文件,无控制台
pyinstaller -F -w .\timecalc.py
  • 使用-i参数,指定图标进行打包:
1
Pyinstaller -F -w -i dragon.ico .\timecalc.py

使用这项图标进行打包:

image-20250117111705355

windows下打包的图标需使用.ico文件,这个格式为windows原生支持的一项图标格式,在日常打开时不会出现兼容性问题,使用其他的png、jpg图片格式可能会出现图标显示异常等问题。

jpg格式转ico格式工具:https://convertio.co/zh/jpg-ico/

完整的打包指令参考如下:

1
Pyinstaller -F -w -i "E:\浏览器下载文件\dragon.ico" "E:\浏览器下载文件\timecalc_v1.2.py"

image-20250117111837697

直接在dist目录下生成带图标的exe应用,且无依赖文件:

image-20250117112007467

打包之后的程序输出,我们可以指定其输出位置,方便我们直接查找生成的应用:使用--distpath参数

1
2
# 输出exe到指定目录
Pyinstaller -F -w -i "E:\dragon.ico" --distpath "E:\浏览器下载文件" "E:\浏览器下载文件\timecalc_v1.2.py"

3、参数说明

常用参数列表如下,方便查询:

参数 说明
-F--onefile 将所有文件打包成一个单独的可执行文件。
-D--onedir 将所有文件打包到一个目录中(默认选项)。
-n NAME--name NAME 指定生成的可执行文件或目录的名称。
--add-data <SRC;DEST> 添加额外的文件或目录到打包中,格式为 源路径;目标路径
--add-binary <SRC;DEST> 添加额外的二进制文件到打包中,格式为 源路径;目标路径
-p DIR--paths DIR 添加额外的 Python 模块搜索路径。
--hidden-import MODULE 强制导入指定的隐藏模块。
--exclude-module MODULE 排除指定的模块。
--clean 清理临时文件和缓存。
--log-level LEVEL 设置日志级别(如 DEBUG, INFO, WARN, ERROR, CRITICAL)。
--windowed-w 不显示命令行窗口(适用于 GUI 程序)。
--console-c 显示命令行窗口(默认选项)。
--icon FILE.ico 设置生成的可执行文件的图标。
--version-file FILE.txt 设置生成的可执行文件的版本信息文件。
--upx-dir DIR 指定 UPX 压缩工具的路径。
--key KEY 使用指定的密钥加密 Python 字节码。
--distpath DIR 指定生成的可执行文件的输出目录。
--workpath DIR 指定临时文件的目录。
--specpath DIR 指定 .spec 文件的生成目录。
--noupx 禁用 UPX 压缩。
--debug 启用调试模式,生成调试信息。
--strip 去除调试信息(减小文件大小)。
--runtime-tmpdir DIR 指定运行时的临时文件目录。
--additional-hooks-dir DIR 添加额外的钩子目录。
--runtime-hook FILE.py 添加额外的运行时钩子文件。
--uac-admin 启用 UAC 管理员权限(仅适用于 Windows)。
--uac-uiaccess 启用 UAC UI 访问权限(仅适用于 Windows)。

参考:https://blog.csdn.net/m0_63203517/article/details/124383678


Python程序封装为exe应用方法
http://www.codestar.top/2025/02/07/Python/Python程序封装为exe应用方法/
作者
mini小新
发布于
2025年2月7日
更新于
2025年2月7日
许可协议