You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller打包Yolov5自定义模型exe报错:找不到default.yaml求解

解决PyInstaller打包Yolov5自定义模型exe找不到default.yaml的问题

方法1:显式指定配置文件路径

  • 放弃依赖库的默认路径,在代码中直接指定自定义yaml的绝对路径,打包时将yaml文件一同纳入:
    • 修改模型加载代码,示例如下(替换原有加载逻辑):
      import os
      # 获取当前运行路径(打包后为exe所在目录)
      current_dir = os.path.dirname(os.path.abspath(__file__))
      # 拼接自定义yaml的绝对路径
      yaml_path = os.path.join(current_dir, 'custom_config.yaml')
      # 加载模型时显式传入配置文件路径
      model = attempt_load('custom_model.pt', cfg=yaml_path)
      
    • 执行打包命令时,通过--add-data参数将yaml文件包含进去(Windows用分号分隔路径,Linux/macOS用冒号):
      pyinstaller --onefile --add-data "custom_config.yaml;." your_script.py
      

方法2:通过PyInstaller spec文件配置依赖

  • 若使用spec文件打包,直接在文件中声明需要包含的数据文件:
    1. 先生成基础spec文件:pyinstaller your_script.py
    2. 打开生成的your_script.spec,修改datas字段,添加yaml文件的映射关系(包括自定义配置和库自带的default.yaml):
    datas=[
        ('./custom_config.yaml', '.'),
        ('./venv/Lib/site-packages/ultralytics/yolov5/data/default.yaml', 'ultralytics/yolov5/data')
    ]
    
    注:第二行的路径需替换为你本地环境中ultralytics库的实际安装路径
    3. 基于修改后的spec文件重新打包:pyinstaller your_script.spec

方法3:设置环境变量指定配置目录

  • 在代码开头添加环境变量配置,强制Ultralytics从当前目录读取配置文件:
    import os
    os.environ['YOLO_CONFIG_DIR'] = os.path.dirname(os.path.abspath(__file__))
    
    将自定义yaml文件重命名为default.yaml后放在脚本同目录,打包时通过--add-data参数将其包含。

方法4:修复动态路径依赖问题

  • 部分场景下,Ultralytics会动态构建配置文件路径,打包后临时目录结构与开发环境不一致导致找不到文件。此时可将库自带的default.yaml复制到脚本目录,打包时一同包含,确保代码加载模型时优先读取本地配置。

额外注意事项

  • 测试exe时,先在打包生成的dist目录中运行,确保所有依赖文件(模型.pt、yaml)与exe处于同一目录;
  • 若使用虚拟环境打包,需确保所有依赖库(yolo、ultralytics等)都安装在虚拟环境内,避免路径混淆。

内容的提问来源于stack exchange,提问作者Bella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 23:59:59