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

Pyinstaller打包Plotly仪表盘运行提示找不到package-info.json如何解决

问题根因

FileNotFoundError报错核心原因是PyInstaller默认仅打包Python可执行代码,不会自动收集Dash生态库(dash、dash-core-components/dcc、dash-html-components等)的非Python资源文件,包括你报错中的package-info.json,以及各类JS、CSS静态资源。你之前配置的hiddenimports仅能解决Python模块导入缺失问题,无法覆盖资源文件收集的需求。

解决步骤

方案1:使用官方预配置钩子(操作最简单)

  • 先安装PyInstaller官方贡献的钩子集合包,内置Dash全量资源收集规则:
    pip install pyinstaller-hooks-contrib
  • 清理之前生成的build、dist文件夹和旧spec文件,重新运行打包命令即可,如果是onedir模式直接用:
    pyinstaller --onedir run_dashboard.py

方案2:手动修改spec文件配置

如果不想安装额外包,可直接修改你的现有spec文件补充资源配置:

  1. 在Analysis代码块前添加资源收集逻辑,把Dash相关资源和你自己的csv文件都纳入打包列表:
from PyInstaller.utils.hooks import collect_data_files

# 收集Dash生态的所有资源文件
dash_datas = collect_data_files('dash')
dcc_datas = collect_data_files('dash.dcc')
html_datas = collect_data_files('dash.html')
# 若使用dash-bootstrap-components,额外添加下面一行
# dbc_datas = collect_data_files('dash_bootstrap_components')

# 合并资源,同时添加你自己的csv文件
# 示例中csv放在项目根目录的data文件夹下,你可以按实际路径修改
added_data = []
added_data += dash_datas + dcc_datas + html_datas
added_data += [('./data/*.csv', './data')]
  1. 补全hiddenimports配置,删除不必要的os(标准库不会被漏打包),补充Dash相关模块:
hiddenimports=['numpy', 'dash', 'dash.dcc', 'dash.html', 'dash_renderer']
  1. 补充代码中的路径兼容逻辑,避免读不到打包后的csv文件,在你的run_dashboard.py开头添加以下代码:
import sys
import os

if getattr(sys, 'frozen', False):
    # 打包后运行环境,切换工作路径到exe解压/存放目录
    base_path = sys._MEIPASS
    os.chdir(base_path)
else:
    # 开发环境路径
    base_path = os.path.dirname(os.path.abspath(__file__))

# 后续所有文件读取都用os.path.join拼接路径,比如读csv:
# df = pd.read_csv(os.path.join(base_path, 'data/xxx.csv'))
  1. 清理旧的build、dist文件夹,用spec文件执行打包:
    pyinstaller run_dashboard.spec
额外注意事项
  • 优先调试通--onedir模式的包再尝试--onefile模式,onefile模式每次运行会把所有资源解压到临时目录,路径适配规则和onedir一致,但首次启动速度更慢。
  • 运行exe时如果还是闪退,可以先打开cmd,把exe拖到cmd窗口回车运行,就能看到完整报错信息,方便定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:36:04