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

PyInstaller打包exe运行时报matplotlib缺失ImportError该如何解决?

问题原因

PyInstaller打包时无法自动识别所有间接依赖:

  • 你指定的TkAgg后端依赖的matplotlib.backends.backend_tkagg模块、tkinter相关组件没有被打包进去
  • pandas调用绘图接口时依赖的pandas.plotting._matplotlib后端模块属于隐含导入,没有被PyInstaller捕获
  • matplotlib运行所需的mpl-data配置目录没有被打包到exe的运行环境中
解决方案

按以下步骤依次尝试即可解决:

  1. 第一步:补充全隐含导入参数后重新打包
    执行打包命令:
pyinstaller --hidden-import=openpyxl --hidden-import=matplotlib --hidden-import=matplotlib.backends.backend_tkagg --hidden-import=pandas.plotting._matplotlib --hidden-import=tkinter --onefile DT_070621.py

如果你的程序没有控制台输出需求,可以加上--windowed参数避免运行时弹出黑框。

  1. 第二步:脚本头部添加matplotlib运行配置
    在你原有所有导入语句之前,添加如下配置代码:
import os
import sys
# 适配PyInstaller运行时的临时目录路径
if getattr(sys, 'frozen', False):
    os.environ['MATPLOTLIBDATA'] = os.path.join(sys._MEIPASS, 'mpl-data')
import matplotlib
# 强制指定绘图后端
matplotlib.use('TkAgg')
import pandas as pd
pd.set_option('plotting.backend', 'matplotlib')

添加完成后再执行第一步的打包命令。

  1. 第三步:通过spec文件打包matplotlib配置目录
    如果前两步仍未解决,先执行命令生成spec配置文件:
pyi-makespec --onefile DT_070621.py

打开生成的DT_070621.spec文件,找到datas = []的行,替换为:

from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('matplotlib')

保存后执行spec文件完成打包:

pyinstaller DT_070621.spec

注意:打包全程需要在你Pycharm运行脚本正常的同个虚拟环境中执行,避免全局环境和虚拟环境依赖不一致导致打包错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:09:03