pyinstaller实现将python程序打包成EXE的执行文件

PyInstaller 是一个流行的 Python 打包工具,它能够将 Python 应用程序及其所有依赖项打包成单个可执行文件,支持 Windows、Linux 和 macOS 等多个平台。PyInstaller 的主要优势在于它的简单易用和跨平台特性,使得开发者可以轻松地将 Python 项目分发给最终用户,而无需让他们安装 Python 解释器或任何依赖库。
 

# 基础打包(生成文件夹)

pyinstaller your_script.py

会在当前目录下生成两个文件夹:

  • build/:包含临时文件和日志

  • dist/:包含生成的可执行文件

    单文件打包 (--onefile 参数)
    --onefile 是 PyInstaller 最常用的参数之一,它可以将所有依赖项打包到一个单独的可执行文件中:

    pyinstaller --onefile your_script.py
    使用 --onefile 参数后,dist/ 目录下将只生成一个可执行文件,便于分发。不过需要注意:

    单文件打包会增加程序的启动时间,因为所有依赖项需要先解压到临时目录

    生成的单个文件比多文件版本稍大

    某些防病毒软件可能会误报单文件打包的程序

PyInstaller 提供了许多有用的参数来定制打包过程:

--noconsole:不显示控制台窗口(适用于 GUI 程序)

--icon=app.ico:为可执行文件设置图标

--name:设置生成的可执行文件名称

--add-data:添加非 Python 文件(如图片、配置文件等)

--hidden-import:显式包含未自动检测到的模块

# 打包成单个exe文件
pyinstaller -F your_script.py
# 无控制台窗口的程序
pyinstaller -F -w your_script.py
# 添加程序图标
pyinstaller -F -w -i app.ico your_script.py
# 指定输出目录
pyinstaller -F --distpath ./output your_script.py
# 排除不需要的模块(减小文件大小)
pyinstaller -F --exclude-module matplotlib your_script.py
# 添加加密密钥
pyinstaller -F --key=yourpassword your_script.py

(1)多文件打包

Pyinstaller -D 【项目绝对路径】

(2)单文件打包

Pyinstaller -F 【项目绝对路径】
Pyinstaller -F D:\code\yunwei\demo_1\lesson08_01.py

遇到的问题:

打包后程序无法运行
可能原因:

缺少依赖项:使用 --hidden-import 参数添加

路径问题:使用 sys._MEIPASS 访问打包后的资源

防病毒软件拦截:尝试添加白名单

2 文件大小过大
解决方案:

使用 UPX 压缩

排除不必要的模块

使用虚拟环境减少依赖项

3 处理数据文件
如果需要包含非 Python 文件(如图片、配置文件等),可以使用 --add-data 参数:

pyinstaller --add-data="data.txt;." your_script.py
在代码中,使用以下方式访问这些文件:

import sys
import os

def resource_path(relative_path):
""" 获取资源的绝对路径 """
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)

# 使用示例
data_path = resource_path('data.txt')
、最佳实践
使用虚拟环境:在干净的虚拟环境中打包,避免包含不必要的依赖

测试打包结果:在不同的机器上测试打包后的程序

版本控制:将 spec 文件纳入版本控制

分阶段调试:先不使用 --onefile 打包,调试成功后再尝试单文件打包

日志记录:在程序中添加日志功能,便于诊断打包后的问题

总结
PyInstaller 是一个功能强大且灵活的 Python 打包工具,通过本文的介绍,你应该已经掌握了:

基本的 pyinstaller --onefile xxx.py 打包方法

如何使用和修改 xxx.spec 文件进行高级配置

Windows 平台特定的控制台窗口控制技巧

教学:

https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV1P24y1o7FY%3Fp%3D5

参考:https://blog.csdn.net/qq_48979387/article/details/132359366

posted @ 2025-08-30 17:29  konglingbin  阅读(4)  评论(0)    收藏  举报