【python3.6】pyinstaller报错AssertionError: Failed to determine matplotlib‘s data directory!【解决方案】

简介: 【python3.6】pyinstaller报错AssertionError: Failed to determine matplotlib‘s data directory!【解决方案】

项目场景:

使用python3.6 使用 pyinstaller 调用 matplotlib 打包成exe时报错:AssertionError: Failed to determine matplotlib's data directory!


问题描述

self._hook_module = importlib_load_source(self.hook_module_name, self.hook_filename)

File “c:\users\71013\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\compat.py”, line 641, in importlib_load_source

return mod_loader.load_module()

File “<frozen importlib._bootstrap_external>”, line 399, in _check_name_wrapper

File “<frozen importlib._bootstrap_external>”, line 823, in load_module

File “<frozen importlib._bootstrap_external>”, line 682, in load_module

File “<frozen importlib._bootstrap>”, line 265, in _load_module_shim

File “<frozen importlib._bootstrap>”, line 684, in _load

File “<frozen importlib._bootstrap>”, line 665, in _load_unlocked

File “<frozen importlib._bootstrap_external>”, line 678, in exec_module

File “<frozen importlib._bootstrap>”, line 219, in _call_with_ames_removed

File “c:\users\71013\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\hooks\hook-matplotlib.py”, line 15, in

assert mpl_data_dir, “Failed to determine matplotlib’s data directory!”

AssertionError: Failed to determine matplotlib’s data directory!


原因分析:

这是由pyinstaller 的 matplotlib钩子引起的错误,由于某种原因,应该获取数据路径的exec_statement()函数不起作用。(这是python的一个bug)


解决方案:

首先,找到python的安装路径中,你的三方库目录(site-packages)中,找到PyInstaller的文件夹,进入到hooks 文件夹中,找到hook-matplotlib.py文件。

提示路径可能如下: C:\Users\xxxx\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyInstaller\hooks

其次,打开hook-matplotlib.py文件,注释掉原来的代码,输入下方代码,点击保存,再重新执行打包动作。

新代码如下:

import matplotlib
mpl_data_dir = matplotlib.get_data_path()
datas = [ 
    (mpl_data_dir, "matplotlib/mpl-data"), 
]

结果展示:

谢谢你这么好看,还点赞+收藏!

相关文章
|
1月前
|
Linux Python
【Azure Function】Python Function部署到Azure后报错No module named '_cffi_backend'
ERROR: Error: No module named '_cffi_backend', Cannot find module. Please check the requirements.txt file for the missing module.
|
1月前
|
机器学习/深度学习 算法 Python
深度解析机器学习中过拟合与欠拟合现象:理解模型偏差背后的原因及其解决方案,附带Python示例代码助你轻松掌握平衡技巧
【10月更文挑战第10天】机器学习模型旨在从数据中学习规律并预测新数据。训练过程中常遇过拟合和欠拟合问题。过拟合指模型在训练集上表现优异但泛化能力差,欠拟合则指模型未能充分学习数据规律,两者均影响模型效果。解决方法包括正则化、增加训练数据和特征选择等。示例代码展示了如何使用Python和Scikit-learn进行线性回归建模,并观察不同情况下的表现。
297 3
|
1月前
|
Python
python中3种获取cookie解决方案
python中3种获取cookie解决方案
22 0
|
1月前
|
Java C语言 Python
解析Python中的全局解释器锁(GIL):影响、工作原理及解决方案
解析Python中的全局解释器锁(GIL):影响、工作原理及解决方案
46 0
|
1月前
|
Python
Python的报错让我学到新知识
Python的报错让我学到新知识
|
1月前
|
数据采集 网络安全 Python
Python使用urllib或者urllib2模块打开网页遇到ssl报错
Python使用urllib或者urllib2模块打开网页遇到ssl报错
Python3.x常用时间的处理方法 和urlopen处理post请求,传值data 原创
Python3.x常用时间的处理方法和urlopen处理post请求,传值data 原创
|
2月前
|
数据可视化 Python Windows
Matplotlib输出中文显示的2种解决方案
Matplotlib输出中文显示的2种解决方案
108 0
|
2月前
|
缓存 Python
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-npf9报错
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-npf9报错
下一篇
无影云桌面