使用pyinstaller对yolo目标检测项目进行exe程序打包(包含环境资源)

目录

一、安装pyinstaller包

二、生成.spec文件

三、添加自己的额外资源(UI、模型等)

四、最后打包项目


一、安装pyinstaller包

首先,通过Pycharm打开项目,设置好项目的解释器(运行环境)

然后通过Pycharm打开左下角的终端(通过pycharm打开的好处是它自动导航到项目的目录不用我们手动CD)

然后输入安装代码

pip install pyinstaller

等待完成安装即可。

二、生成.spec文件

执行代码

YourAppName替换成你的打包后APP的名字

your_script.py替换成你的主程序脚本(比如main.py)

pyinstaller --name YourAppName --onefile --windowed your_script.py

运行结束后它把你的环境全部打包了,打包好的exe文件在dist目录下

在你项目的目录会生成一个.spec的文件

文件里的详细参数注解如下:

# -*- mode: python ; coding: utf-8 -*-

a = Analysis(
    ['main.py'],  # 指定主脚本文件
    pathex=[],  # 额外搜索路径,通常留空
    binaries=[],  # 指定需要包含的二进制文件,通常留空
    datas=[  # 指定要打包的数据文件及其目标路径
        ('datas/person1025.pt', 'datas'),
    ],
    hiddenimports=[],  # 列出需要隐藏导入的模块,通常留空
    hookspath=[],  # 自定义 hook 文件的路径,通常留空
    hooksconfig={},  # 钩子配置,通常留空
    runtime_hooks=[],  # 运行时钩子,通常留空
    excludes=[],  # 列出不需要打包的模块,通常留空
    noarchive=False,  # 是否不创建存档文件,通常为 False
    optimize=0,  # 优化级别,0 为不优化
)

pyz = PYZ(a.pure)  # 创建包含所有纯 Python 代码的压缩包

exe = EXE(
    pyz,  # 包含 PYZ 对象
    a.scripts,  # 包含的脚本
    a.binaries,  # 包含的二进制文件
    a.datas,  # 包含的数据文件
    [],  # 额外的 zip 文件,通常留空
    name='DensePedestrianDetection',  # 生成的可执行文件名称
    icon = 'C:/Users/11131/Pictures/tubiao.ico',  # 添加图标所在的路径
    debug=False,  # 是否启用调试模式,通常为 False
    bootloader_ignore_signals=False,  # 是否忽略启动器信号,通常为 False
    strip=False,  # 是否删除调试符号,通常为 False
    upx=True,  # 是否使用 UPX 压缩可执行文件,通常为 True
    upx_exclude=[],  # 排除 UPX 压缩的文件,通常留空
    runtime_tmpdir=None,  # 运行时临时目录,通常为 None
    console=False,  # 是否显示控制台窗口(Windows),通常为 False 用于 GUI 应用
    disable_windowed_traceback=False,  # 是否禁用窗口式回溯,通常为 False
    argv_emulation=False,  # 是否模拟 argv,通常为 False
    target_arch=None,  # 指定目标架构,通常为 None
    codesign_identity=None,  # 代码签名身份,通常为 None
    entitlements_file=None,  # 权限文件,通常为 None
)

可以根据这里面的参数自行调整一些

比如添加图标:更改icon的路径,找到你的ico文件,jpg\png转换ico格式可以用下面这个

图片转 ico 图标 - 锤子在线工具

三、添加自己的额外资源(UI、模型等)

你想在打包时添加额外的文件(例如模型、数据文件、UI图片等),可以修改生成的 .spec 文件。打开 .spec 文件并找到 datas 部分,添加需要的文件。

datas=[('path/to/your/model.pt', '你打包后的目录'), 
        ('path/to/your/image.png', '你打包后的目录')]

前面是你资源的路径(可以用相对路径)

然后需要在项目中修改一下你原来的资源路径,以便打包后的程序能找到

如下图,在你原来的模型路径(其他资源也是)使用resource_path方法进行路径的变换

有些需要程序自主创建的目录,比如保存目录,使用相对路径保存在exe文件旁边就行,不用使用resource_path方法

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)

把我们所有的UI以及资源文件路径配置后就可以再次打包了

四、最后打包项目

执行如下代码(your_script替换成你的spec文件名)

pyinstaller your_script.spec

等待运行完成即可。

在dist目录就可以找到exe的文件,双击yuanshen启动!

猜你喜欢

转载自blog.csdn.net/qq_62078354/article/details/143478620