最简单的pyinstaller打包exe方式小结

 更新时间:2025年07月28日 08:25:57   作者:油泼辣子多加  
本文主要介绍了最简单的pyinstaller打包exe方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.背景

  1. 在实际工作过程中,python项目文件完成开发后,存在打包成exe使用的需求,而如何正确并且快捷的实现打包尤为重要,目前python打包的方式很多,包括py2exe,pyinstaller,cx_Freeze,nuitka以及Pyarmor,本次只针对pyinstaller进行说明。
  2. PyInstaller是一个用于将Python应用程序打包成独立可执行文件的库。它可以将Python代码及其所有依赖项(包括第三方库和资源文件)打包到一个单独的可执行文件中,使得应用程序可以在没有Python解释器环境的系统上独立运行。

2.特点

以下是PyInstaller的一些主要特点和功能:

  • 跨平台支持:PyInstaller可以在主流操作系统(如Windows、macOS和Linux)上运行,并生成相应平台的可执行文件
  • 自动化打包:PyInstaller会分析Python代码及其依赖项,自动检测所需的模块和资源文件,并将它们打包到一个可执行文件中
  • 独立可执行文件:打包后的可执行文件包含了应用程序的所有依赖项,不需要用户单独安装Python解释器或相关库
  • 支持多种打包选项:PyInstaller提供了多种打包选项,可以定制可执行文件的行为,如设置命令行参数、图标、文件路径等
  • 支持多种GUI框架:PyInstaller支持常见的GUI框架,如Tkinter、PyQt、wxPython等,可以将基于这些框架开发的应用程序打包为独立可执行文件

3.打包方式

3.1单文件打包法

单个文件内容,直接使用pyinstaller命令打包,打包后自动生成exe运行文件使用。

# 1.执行命令
pyinstaller -F xxx.py

# 2.去生成的dist文件夹找xxx.exe运行

# 3.运行成功,xxx.exe则为可执行文件,删除其它文件

3.2多文件打包法

当存在多个文件时,需要指定好程序入口文件,使用pyinstall -D后,生成spec文件,修改spec文件,再使用pyinstaller -F打包。

# 1.执行命令,xxx.py为程序入口文件
pyinstall -D xxx.py 

# 2.删除生成的bulid和dist文件夹,仅保留xxx.spec文件

# 3.修改xxx.spec文件,详见2.2.1

# 4.执行命令
pyinstaller -F xxx.spec

# 5.去dist文件夹下找xxx.exe文件

# 6.运行成功,删除临时文件目录build;dist目录为打包的结果,可执行文件和其它程序运行的关联文件都在这个目录下

3.3配置文件打包法(最为简单)

此种方法最为直接简单,先生成spec配置文件,然后修改文件后,直接使用pyinstaller命令打包。

#第一步生成配置文件
pyi-makespec XXX.py   获取spec配置

#第二步修改配置文件

#第三步打包命令
pyinstaller  XXX.spec

打包过程如图:

打包成功结果如图:

4.SPEC配置文件

以下是spec配置文件,还可以直接按照文件内容提示填入所需文件名、打包名称等,从而更为简单的使用pyinstaller XXX.spec完成打包。

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
    ['PY主文件',
    'PY1辅助文件',
    'PY2辅助文件',
    'PY3辅助文件',],
    pathex=['多个PY文件所在路径'],
    binaries=[],# 程序调用外部pyd、dll文件(二进制文件路径)以数组形式传入
    datas=[],# 存放的资源文件
    hiddenimports=[],# pyinstaller解析模块时可能会遗漏某些模块
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='修改EXE的文件名',
    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,
)

5.拓展

对提到的五种打包库进行以下简单介绍:

  1. py2exe:
    • 跨平台支持有限,主要用于将Python脚本打包为Windows可执行文件
    • 简单易用,配置相对简单,适合简单的打包需求
    • 可以将Python解释器和依赖项打包到单个可执行文件中
  2. PyInstaller:
    • 跨平台支持广泛,可以生成Windows、macOS和Linux等系统上的可执行文件
    • 自动化打包,能够自动检测和包含所有依赖项
    • 支持多种GUI框架,如Tkinter、PyQt、wxPython等
    • 可以生成独立的可执行文件,无需安装Python解释器
  3. cx_Freeze:
    • 跨平台支持,可以生成Windows、macOS和Linux等系统上的可执行文件
    • 配置灵活,可以根据需求进行定制
    • 支持多种GUI框架和第三方库
    • 生成的可执行文件较小,具有较小的内存占用
  4. Nuitka:
    • 将Python代码编译为机器码,提高执行效率
    • 生成的可执行文件性能较高,执行速度比解释执行的Python代码更快
    • 与许多第三方库和C扩展兼容
    • 跨平台支持广泛,可以生成Windows、macOS和Linux等系统上的可执行文件
  5. Pyarmor:
    • 用于保护Python代码,提供加密和混淆功能,以防止未经授权的访问和复制
    • 支持对Python脚本进行防调试和防反向工程处理
    • 配置简单,可以与其他打包工具结合使用
    • 跨平台支持,可以在不同系统上使用
      这些工具在Python打包和分发方面都有其独特的特点和适用场景,选择合适的工具取决于我们的具体需求,例如目标平台、代码保护需求、对第三方库的支持程度以及打包后的可执行文件的性能要求等。

到此这篇关于最简单的pyinstaller打包exe方式小结的文章就介绍到这了,更多相关pyinstaller打包exe内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Python编程itertools模块处理可迭代集合相关函数

    Python编程itertools模块处理可迭代集合相关函数

    本篇博客将为你介绍Python函数式编程itertools模块中处理可迭代集合的相关函数,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-09-09
  • 5行Python代码实现一键批量扣图

    5行Python代码实现一键批量扣图

    在日常生活或者工作中,经常会遇到想将某张照片中的人物抠出来,本文就介绍了Python代码实现一键批量扣图,感兴趣的可以了解一下
    2021-06-06
  • Python time三种时间转换小结

    Python time三种时间转换小结

    本文主要介绍了Python time三种时间转换小结,主要包括时间戳,结构化时间,字符串时间,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python实现从Markdown到PDF的转换的方法

    Python实现从Markdown到PDF的转换的方法

    Markdown,以其简洁的语法和易于阅读的特性,成为了许多作家、开发者和学生记录思想、编写教程或撰写报告的首选格式,然而,在分享或打印这些文档时,Markdown的纯文本形式可能无法满足对版式和布局的专业需求,本文将介绍如何用Python代码轻松实现从Markdown到PDF的转换
    2024-07-07
  • Python 中使用 Selenium 单击网页按钮功能

    Python 中使用 Selenium 单击网页按钮功能

    Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器,本篇文章将介绍如何在 Python 中使用 selenium 单击网页上的按钮,感兴趣的朋友一起看看吧
    2023-11-11
  • Python中re.compile函数的使用方法

    Python中re.compile函数的使用方法

    这篇文章主要介绍在python的re模块中怎样应用正则表达式,文中有相关的代码示例,具有一定的参考价值,需要的朋友可以参考下
    2023-06-06
  • 使用Python开发一个简单的本地图片服务器

    使用Python开发一个简单的本地图片服务器

    本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的 Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2025-04-04
  • pymongo中group by的操作方法教程

    pymongo中group by的操作方法教程

    这篇文章主要给大家介绍了关于pymongo中group by的操作方法,文中通过示例代码介绍的非常详细,对大家学习或者使用pymongo具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • python展开嵌套列表的多种方法

    python展开嵌套列表的多种方法

    本文主要介绍了python展开嵌套列表的多种方法,包括for循环、列表推导式和sum函数三种方法,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • pytest多进程或多线程执行测试实例

    pytest多进程或多线程执行测试实例

    这篇文章介绍了pytest多进程或多线程执行测试的实例,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07

最新评论