【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"), 
]

结果展示:

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

相关文章
|
7天前
|
人工智能 Shell 开发工具
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
本文介绍了Python中处理异常的基本方法,重点讲解了`try`和`except`的用法。通过一个计算苹果重量的小程序示例,展示了如何捕获用户输入错误并进行处理。主要内容包括: 1. **回顾上次内容**:简要回顾了Shell环境、Python3游乐场和Vim编辑器的使用。 2. **编写程序**:编写了一个简单的程序来计算苹果的总重量,但发现由于输入类型问题导致结果错误。 3. **调试与修正**:通过调试发现输入函数返回的是字符串类型,需要将其转换为整数类型才能正确计算。
48 32
|
1天前
|
监控 Java 计算机视觉
Python图像处理中的内存泄漏问题:原因、检测与解决方案
在Python图像处理中,内存泄漏是常见问题,尤其在处理大图像时。本文探讨了内存泄漏的原因(如大图像数据、循环引用、外部库使用等),并介绍了检测工具(如memory_profiler、objgraph、tracemalloc)和解决方法(如显式释放资源、避免循环引用、选择良好内存管理的库)。通过具体代码示例,帮助开发者有效应对内存泄漏挑战。
11 1
|
3月前
|
数据可视化 搜索推荐 Shell
Python与Plotly:B站每周必看榜单的可视化解决方案
Python与Plotly:B站每周必看榜单的可视化解决方案
|
3月前
|
数据采集 API 定位技术
Python技术进阶:动态代理IP的跨境电商解决方案
Python技术进阶:动态代理IP的跨境电商解决方案
|
4月前
|
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.
111 2
|
4月前
|
机器学习/深度学习 算法 Python
深度解析机器学习中过拟合与欠拟合现象:理解模型偏差背后的原因及其解决方案,附带Python示例代码助你轻松掌握平衡技巧
【10月更文挑战第10天】机器学习模型旨在从数据中学习规律并预测新数据。训练过程中常遇过拟合和欠拟合问题。过拟合指模型在训练集上表现优异但泛化能力差,欠拟合则指模型未能充分学习数据规律,两者均影响模型效果。解决方法包括正则化、增加训练数据和特征选择等。示例代码展示了如何使用Python和Scikit-learn进行线性回归建模,并观察不同情况下的表现。
847 3
|
4月前
|
Python
python中3种获取cookie解决方案
python中3种获取cookie解决方案
40 0
|
4月前
|
Java C语言 Python
解析Python中的全局解释器锁(GIL):影响、工作原理及解决方案
解析Python中的全局解释器锁(GIL):影响、工作原理及解决方案
79 0
|
4月前
|
Python
Python的报错让我学到新知识
Python的报错让我学到新知识
46 0
|
4月前
|
数据采集 网络安全 Python
Python使用urllib或者urllib2模块打开网页遇到ssl报错
Python使用urllib或者urllib2模块打开网页遇到ssl报错
57 0

热门文章

最新文章

推荐镜像

更多