Python脚本打包成可执行文件(exe)的详细步骤指南

文章目录

  • 前言
  • 如何将Python 脚本打包成可执行文件(exe)
  • 1. 测试python脚本
  • 2. 安装 PyInstaller
  • 3. 创建 PyInstaller spec 文件
  • 4. 生成可执行文件
  • 4.1 去掉黑框
  • 前言

      如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
      而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


    如何将Python 脚本打包成可执行文件(exe)

    1. 测试python脚本

    python-登录界面-demo

    2. 安装 PyInstaller

    pip install pyinstaller
    请添加图片描述

    3. 创建 PyInstaller spec 文件

    pyi-makespec –onefile your_script.py


    生成15-GUI-登录界面.spec文件

    # -*- mode: python ; coding: utf-8 -*-
    
    
    a = Analysis(
        ['15-GUI-登录界面.py'],
        pathex=[],
        binaries=[],
        datas=[],
        hiddenimports=[],
        hookspath=[],
        hooksconfig={},
        runtime_hooks=[],
        excludes=[],
        noarchive=False,
        optimize=0,
    )
    pyz = PYZ(a.pure)
    
    exe = EXE(
        pyz,
        a.scripts,
        a.binaries,
        a.datas,
        [],
        name='15-GUI-登录界面',
        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,
    )
    
    

    解析:
    Analysis 部分:

    a = Analysis(
        ['15-GUI-登录界面.py'],  # 需要打包的主脚本
        pathex=[],               # 包含脚本的搜索路径,通常是当前目录
        binaries=[],             # 需要打包的二进制文件列表
        datas=[],                # 需要打包的数据文件列表
        hiddenimports=[],        # 需要隐藏导入的模块列表
        hookspath=[],            # Hook 文件的搜索路径
        hooksconfig={},          # Hook 文件的配置
        runtime_hooks=[],        # 运行时钩子
        excludes=[],             # 需要排除的模块列表
        noarchive=False,         # 如果为 True,不打包成一个单独的文件
        optimize=0,              # 优化级别(0, 1, 2)
    )
    
    

    参数解释:
    [‘15-GUI-登录界面.py’]:主脚本文件。
    pathex:搜索路径,PyInstaller 在这些路径中查找导入的模块。可以指定多个路径。
    binaries:额外的二进制文件,通常是 DLL 或 SO 文件,需要包含在打包中。
    datas:数据文件列表,如图像、配置文件等,需要包含在打包中。
    hiddenimports:PyInstaller 未能自动检测到的模块列表。
    hookspath:指定钩子文件的路径,钩子文件是用来处理模块的特殊导入情况的。
    hooksconfig:钩子配置文件。
    runtime_hooks:运行时钩子,程序启动时执行的钩子。
    excludes:需要排除在打包之外的模块列表。
    noarchive:如果为 True,则不将所有内容打包到一个单独的 .pyz 文件中。
    optimize:优化级别,0(无优化)、1(基本优化)、2(更高优化)。

    PYZ 部分:

    pyz = PYZ(a.pure)
    

    这部分创建一个 .pyz 文件(包含所有纯 Python 模块)。

    EXE 部分:

    exe = EXE(
        pyz,                     # PYZ 对象
        a.scripts,               # 分析得到的脚本文件
        a.binaries,              # 分析得到的二进制文件
        a.datas,                 # 分析得到的数据文件
        [],                      # 其他需要包含的文件列表
        name='15-GUI-登录界面',  # 生成的可执行文件名称
        debug=False,             # 如果为 True,生成的可执行文件将在调试模式下运行
        bootloader_ignore_signals=False,  # 启动程序忽略信号
        strip=False,             # 如果为 True,从生成的文件中去掉符号表和调试信息
        upx=True,                # 如果为 True,使用 UPX 压缩可执行文件
        upx_exclude=[],          # 不使用 UPX 压缩的文件列表
        runtime_tmpdir=None,     # 在运行时解压临时文件的目录
        console=True,            # 如果为 True,生成的可执行文件将在控制台模式下运行
        disable_windowed_traceback=False,  # 禁用窗口化的回溯
        argv_emulation=False,    # 模拟命令行参数传递(仅 MacOS 有效)
        target_arch=None,        # 目标架构
        codesign_identity=None,  # 代码签名身份(仅 MacOS 有效)
        entitlements_file=None,  # 权限文件(仅 MacOS 有效)
    )
    
    

    参数解释:
    pyz:前面创建的 PYZ 对象。
    a.scripts:分析对象中的脚本文件。
    a.binaries:分析对象中的二进制文件。
    a.datas:分析对象中的数据文件。
    name:生成的可执行文件名称。
    debug:如果为 True,生成的可执行文件将在调试模式下运行。
    bootloader_ignore_signals:如果为 True,启动程序将忽略信号。
    strip:如果为 True,从生成的文件中去掉符号表和调试信息。
    upx:如果为 True,使用 UPX 压缩可执行文件。
    upx_exclude:不使用 UPX 压缩的文件列表。
    runtime_tmpdir:在运行时解压临时文件的目录。
    console:如果为 True,生成的可执行文件将在控制台模式下运行。
    disable_windowed_traceback:禁用窗口化的回溯。
    argv_emulation:模拟命令行参数传递(仅 MacOS 有效)。
    target_arch:目标架构。
    codesign_identity:代码签名身份(仅 MacOS 有效)。
    entitlements_file:权限文件(仅 MacOS 有效)。
    进一步定义:
    你可以根据需要进一步自定义 spec 文件。例如,如果你想添加数据文件,可以这样修改:

    a = Analysis(
        ['15-GUI-登录界面.py'],
        pathex=[],
        binaries=[],
        datas=[
            ('data/logConfig.ini', 'data'),  # 添加数据文件
        ],
        hiddenimports=[],
        hookspath=[],
        hooksconfig={},
        runtime_hooks=[],
        excludes=[],
        noarchive=False,
        optimize=0,
    )
    
    

    4. 生成可执行文件

    pyinstaller your_script.spec


    测试:
    双击:

    测试成功。

    4.1 去掉黑框

    需要将console参数设置为False

    # -*- mode: python ; coding: utf-8 -*-
    
    
    a = Analysis(
        ['15-GUI-登录界面.py'],
        pathex=[],
        binaries=[],
        datas=[],
        hiddenimports=[],
        hookspath=[],
        hooksconfig={},
        runtime_hooks=[],
        excludes=[],
        noarchive=False,
        optimize=0,
    )
    pyz = PYZ(a.pure)
    
    exe = EXE(
        pyz,
        a.scripts,
        a.binaries,
        a.datas,
        [],
        name='15-GUI-登录界面',
        debug=False,
        bootloader_ignore_signals=False,
        strip=False,
        upx=True,
        upx_exclude=[],
        runtime_tmpdir=None,
        console=False,
        disable_windowed_traceback=False,
        argv_emulation=False,
        target_arch=None,
        codesign_identity=None,
        entitlements_file=None,
    )
    
    

    重新生成可执行文件

    作者:栗子~~

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python脚本打包成可执行文件(exe)的详细步骤指南

    发表回复