开发者

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

目录
  • 1.背景
  • 2.特点
  • 3.打包方式
    • 3.1单文件打包法
    • 3.2多文件打包法
    • 3.3配置文件打包法(最为简单)
  • 4.SPEC配置文件
    • 5.拓展

      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命令打包。

      #第一步生成配置javascript文件
      pyi-makespec XXX.py   获取spec配置
      
      #第二步修改配置文件
      
      #第三步打包命令
      pyinstaller  XXX.spec
      

      打包过程如图:

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

      打包成功结果如图:

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

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

          这些工具在Python打包和分发方面都有其独特的特点和适用场景,选择合适的工具取决于我们的具体需求,http://www.devze.com例如目标平台、代码保护需求、对第三方库的支持程度以及打包后的可执行文件的性能要求等。

      到此这篇关于最简单的pyinstaller打包exe方式小结的文章就介绍到这了,更多相关pyinstaller打包exe内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)! 

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜