Python程序封装为exe应用方法
本文最后更新于:2025年2月7日 晚上
1、背景
在我们执行python脚本的过程中,每次执行都需要在命令面板执行一段指令,如python timecalc.py
。通过指令执行的方式,利于动态修改脚本检查效果,方便调试。当我们脚本的功能都已经实现完成后,那么在windows PC中,考虑将其封装为exe程序,之后每次运行,只需要双击应用即可,也无需执行命令。
2、exe封装过程
2.1 原始应用
基于时间计算器timecalc.py进行封装,基本功能,计算毫秒级别时间序列及时间戳的差值,界面如下,执行python timecalc.py
运行脚本:
2.2 Pyinstaller封装环境准备
Pyinstaller为封装python脚本的三方库,通过pip进行安装:
1 |
|
如果在配置文件中修改过PIP镜像源为清华PIP镜像源,可能会出现403断联情况(实际为本机IP被pip清华源封禁,无此问题可忽略,正常下载即可):
另外可使用-i
参数在安装时指定官方镜像源下载:
1 |
|
安装成功如下,安装成功会出现Successfully关键字:
安装完成,可以直接在控制台执行pyinstaller
验证安装,正常会返回以下说明内容:
2.3 Pyinstaller封装py程序
拷贝需要打包的python程序地址:选中python程序文件,shift+鼠标右键,点击复制文件地址
1 |
|
执行后即开始打包过程:
出现‘completed successfully’字段即打包完成:
按照此方法执行完成后会在同路径下生成dict文件夹、build文件夹、timecalc.spec文件
:
最后只需要dist路径下的exe程序即可:
运行之后,效果是和执行脚本一样:
注意: 此方法存在的缺点就是,exe应用执行时需要和_internal
路径在一块,这个目录下存放的为依赖文件,分开存放的话,程序会执行失败。
2.4 Pyinstaller无依赖封装py程序
- 使用
-F
参数,打包时不生成依赖文件:
1 |
|
exe文件可以任意搬运,但每次执行,都会出现控制台运行框。
- 使用
-w
参数,去除控制台:
1 |
|
- 使用
-i
参数,指定图标进行打包:
1 |
|
使用这项图标进行打包:
windows下打包的图标需使用.ico文件,这个格式为windows原生支持的一项图标格式,在日常打开时不会出现兼容性问题,使用其他的png、jpg图片格式可能会出现图标显示异常等问题。
jpg格式转ico格式工具:https://convertio.co/zh/jpg-ico/
完整的打包指令参考如下:
1 |
|
直接在dist目录下生成带图标的exe应用,且无依赖文件:
打包之后的程序输出,我们可以指定其输出位置,方便我们直接查找生成的应用:使用--distpath
参数
1 |
|
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