当前位置: 首页 > article >正文

0101安装matplotlib_numpy_pandas-报错-python

文章目录

    • 1 前言
    • 2 报错
      • 报错1:ModuleNotFoundError: No module named 'distutils'
      • 报错2:ERROR:root:code for hash blake2b was not found.
      • 报错3:**`ModuleNotFoundError: No module named '_tkinter'`**
      • 报错4:UserWarning: Glyph 39044 (\N{CJK UNIFIED IDEOGRAPH-9884}) missing from font(s) DejaVu Sans.
        • 方法 1:安装支持 CJK(中日韩)的字体
          • 步骤 1:安装思源黑体(Noto Sans CJK)
          • 步骤 2:清理 Matplotlib 字体缓存
        • 方法 2:代码中指定中文字体
        • 方法 3:修改 Matplotlib 配置文件
          • 步骤 1:查找配置文件路径
          • 步骤 2:编辑配置文件
        • 验证是否生效
      • 错误5 AttributeError: 'FigureCanvasInterAgg' object has no attribute 'tostring_rgb'. Did you mean: 'tostring_argb'?
    • 结语

1 前言

最近在学习人工智能-机器学习入门,想通过python解决下线性回归问题。本人电脑为macos m1 pro,使用homebrew管理包依赖,

安装pyenv管理python版本,python版本3.12.x,openssl@1.1和python@3共存。

2 报错

报错1:ModuleNotFoundError: No module named ‘distutils’

产生过程:安装matplotlib报错ModuleNotFoundError: No module named ‘distutils’

原因分析:Python 3.12+ 移除了 distutils:官方不再维护此模块,改用 setuptools 替代

解决方案:

# 强制升级 setuptools 和 pip
pip install --upgrade --force-reinstall setuptools pip

报错2:ERROR:root:code for hash blake2b was not found.

产生过程:运行如下代码

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn import datasets, linear_model# read_csv里面的参数是csv在你电脑上的路径,此处csv文件放在notebook运行目录下面的CCPP目录里
data = pd.read_csv('./ccpp.csv')
data.head()

原因分析:

  1. 此错误通常表示当前 Python 环境中缺少 blake2b 哈希算法的支持,OpenSSL 依赖缺失或版本过低(需要 OpenSSL 1.1.1 或更高版本)。

解决方案:通过homebrew 卸载低版本openssl,升级最新版本openssl ,重新编译安装python

brew uninstall --ignore-dependencies openssl@1.1
brew install openssl
pyenv uninstall 3.12
pyenv install 3.12
pyenv global 3.12.9

报错3:ModuleNotFoundError: No module named '_tkinter'

  • 产生过程:编译安装python的时候报错

  • 产生原因:此错误表示 Python 环境中缺少 Tkinter 模块的支持,通常是因为在编译 Python 时未正确安装 Tcl/Tk 开发库

  • 解决方案:安装依赖,重新编译安装python

    brew install tcl-tk
    

最后环境配置正常如下图:

在这里插入图片描述

报错4:UserWarning: Glyph 39044 (\N{CJK UNIFIED IDEOGRAPH-9884}) missing from font(s) DejaVu Sans.

在 macOS M1 Pro 上使用 Matplotlib 绘图时,如果遇到 UserWarning: Glyph XXXX missing from font(s) DejaVu Sans 警告,通常是因为 Matplotlib 默认字体 DejaVu Sans 不支持某些 Unicode 字符(如中文、日文、韩文字符)。


方法 1:安装支持 CJK(中日韩)的字体
步骤 1:安装思源黑体(Noto Sans CJK)

推荐安装 Google 的 Noto Sans CJK 字体,它覆盖了大部分 Unicode 字符:

bash

复制

# 通过 Homebrew 安装(需提前安装 Homebrew)
brew install font-noto-sans-cjk font-noto-sans-cjk-sc# 或者手动下载并安装:
# 从官网下载:https://www.google.com/get/noto/
# 解压后双击 .ttf 文件,点击 "安装"。
步骤 2:清理 Matplotlib 字体缓存

Matplotlib 会缓存字体列表,安装新字体后需删除缓存:

bash

复制

# 查找缓存路径
python -c "import matplotlib; print(matplotlib.get_cachedir())"# 输出类似:/Users/username/.matplotlib
# 删除该目录下的 fontlist-* 文件
rm -rf /Users/username/.matplotlib/fontlist-*

方法 2:代码中指定中文字体

在 Python 代码中直接指定使用已安装的中文字体(如 Noto Sans CJK):

python

复制

import matplotlib.pyplot as plt
import numpy as np# 设置 Matplotlib 使用支持中文的字体
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK JP']  # 根据字体名称调整
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# 示例:绘制带中文标签的图表
plt.plot(np.random.rand(10))
plt.title('示例图表')  # 中文标题
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

方法 3:修改 Matplotlib 配置文件
步骤 1:查找配置文件路径

bash

复制

python -c "import matplotlib; print(matplotlib.matplotlib_fname())"
# 输出类似:/Users/username/.virtualenvs/venv/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc
步骤 2:编辑配置文件

找到以下两行并修改:

bash

复制

# 去掉注释并设置字体
font.family : sans-serif
font.sans-serif : Noto Sans CJK JP, DejaVu Sans, Arial  # 添加 Noto Sans CJK 到字体列表开头

验证是否生效

运行以下代码检查是否支持中文:

python

复制

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Noto Sans CJK JP']
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('测试中文')
plt.show()

如果图表标题正常显示中文,则问题解决。

错误5 AttributeError: ‘FigureCanvasInterAgg’ object has no attribute ‘tostring_rgb’. Did you mean: ‘tostring_argb’?

解决方案,更换matplotlib后端

matplotlib.use('TkAgg') 

效果如下图所示:

在这里插入图片描述

结语

❓QQ:806797785

⭐️仓库地址:https://gitee.com/gaogzhen

⭐️仓库地址:https://github.com/gaogzhen

[1]deepseek[CP/OL].

[2]用scikit-learn和pandas学习线性回归[CP/OL].

相关文章:

0101安装matplotlib_numpy_pandas-报错-python

文章目录 1 前言2 报错报错1:ModuleNotFoundError: No module named distutils报错2:ERROR:root:code for hash blake2b was not found.报错3:**ModuleNotFoundError: No module named _tkinter**报错4:UserWarning: Glyph 39044 …...

Qt之QHostInfo

简介 QHostInfo表示主机信息&#xff0c;即主机名称 常用接口 static QHostInfo fromName(const QString &name); QString hostName() const; QList<QHostAddress> addresses() const;结构 #mermaid-svg-HTJ95sEk8JwO4uCy {font-family:"trebuchet ms",…...

OSCP - Proving Grounds- SoSimple

主要知识点 wordpress 插件RCE漏洞sudo -l shell劫持 具体步骤 依旧是nmap 起手&#xff0c;只发现了22和80端口&#xff0c;但80端口只能看到一张图 Nmap scan report for 192.168.214.78 Host is up (0.46s latency). Not shown: 65533 closed tcp ports (reset) PORT …...

JVM虚拟机篇(五):深入理解Java类加载器与类加载机制

深入理解Java类加载器与类加载机制 深入理解Java类加载器与类加载机制一、引言二、类加载器2.1 类加载器的定义2.2 类加载器的分类2.2.1 启动类加载器&#xff08;Bootstrap ClassLoader&#xff09;2.2.2 扩展类加载器&#xff08;Extension ClassLoader&#xff09;2.2.3 应用…...

Golang的Goroutine(协程)与runtime

目录 Runtime 包概述 Runtime 包常用函数 1. GOMAXPROCS 2. Caller 和 Callers 3. BlockProfile 和 Stack 理解Golang的Goroutine Goroutine的基本概念 特点&#xff1a; Goroutine的创建与启动 示例代码 解释 Goroutine的调度 Gosched的作用 示例代码 输出 解…...

C语言求3到100之间的素数

一、代码展示 二、运行结果 三、感悟思考 注意: 这个题思路他是一个试除法的一个思路 先进入一个for循环 遍历3到100之间的数字 第二个for循环则是 判断他不是素数 那么就直接退出 这里用break 是素数就打印出来 在第一个for循环内 第二个for循环外...

【2025】物联网发展趋势介绍

目录 物联网四层架构感知识别层网络构建层管理服务层——**边缘存储**边缘计算关键技术&#xff1a;综合应用层——信息应用 物联网四层架构 综合应用层&#xff1a;信息应用 利用获取的信息和知识&#xff0c;支持各类应用系统的运转 管理服务层&#xff1a;信息处理 对数据进…...

如何查看 MySQL 的磁盘空间使用情况:从表级到数据库级的分析

在日常数据库管理中&#xff0c;了解每张表和每个数据库占用了多少磁盘空间是非常关键的。这不仅有助于我们监控数据增长&#xff0c;还能为性能优化提供依据。 Google Gemini中国版调用Google Gemini API&#xff0c;中国大陆优化&#xff0c;完全免费&#xff01;https://ge…...

AI平台初步规划实现和想法

要实现一个类似Coze的工作流搭建引擎&#xff0c;可以结合SmartEngine作为后端工作流引擎&#xff0c;ReactFlow作为前端流程图渲染工具&#xff0c;以及Ant Design作为UI组件库。以下是实现的步骤和关键点&#xff1a; ### 1. 后端工作流引擎&#xff08;SmartEngine&#xf…...

ARXML文件解析-2

目录 1 摘要2 常见ARXML文件注意事项以及常见问题2.1 注意事项2.2 常见问题2.3 答疑 3 ARXML解读/编辑指南3.1 解读ARXML文件的步骤3.2 编辑ARXML文件的方法3.3 验证与调试 4 总结 1 摘要 本文主要对ARXML文件的注意事项、常见问题以及解读与编辑进行详细介绍。 上文回顾&…...

汇编学习之《移位指令》

这章节学习前需要回顾之前的标志寄存器的内容&#xff1a; 汇编学习之《标志寄存器》 算数移位指令 SAL (Shift Arithmetic Left)算数移位指令 : 左移一次&#xff0c;最低位用0补位&#xff0c;最高位放入EFL标志寄存器的CF位&#xff08;进位标志&#xff09; OllyDbg查看…...

Nature Communications上交、西湖大学、复旦大学研发面向机器人多模式运动的去电子化刚弹耦合高频自振荡驱动单元

近年来&#xff0c;轻型仿生机器人因其卓越的运动灵活性与环境适应性受到国际机器人领域的广泛关注。然而&#xff0c;现有气动驱动器普遍受限于低模量粘弹性材料的回弹滞后效应与能量耗散特性&#xff0c;加之其"非刚即柔"的二元结构设计范式&#xff0c;难以同时满…...

对备忘录模式的理解

对备忘录模式的理解 一、场景1、题目【[来源](https://kamacoder.com/problempage.php?pid1095)】1.1 题目描述1.2 输入描述1.3 输出描述1.4 输入示例1.5 输出示例 2、理解需求 二、不采用备忘录设计模式1、代码2、问题3、错误的备忘录模式 三、采用备忘录设计模式1、代码1.1 …...

【国产突围!致远电子ZXDoc如何打破Vector垄断,成为新能源车研发“神器”?】

摘要&#xff1a;在汽车“新四化”浪潮下&#xff0c;国产汽车总线工具链软件正迎来高光时刻&#xff01;广州致远电子推出的ZXDoc以全栈自主化技术硬核国产芯片生态&#xff0c;斩获2024金辑奖“最佳技术实践应用奖”&#xff0c;成为新能源车企研发工程师的“效率倍增器”。本…...

【数据结构】图的基本概念

图的定义 通俗来说一堆顶点被一堆线连在一起&#xff0c;这一坨顶点与线的集合 目录 图的定义 术语 有向图与无向图 简单图与多重图 度、入度与出度 路径与回路 路径长度与距离 子图 连通、连通图与连通分量 强连通、强连通图与强连通分量 完全图 生成树与生成森林 权…...

常见的HR面问题汇总

⚠️注意&#xff1a;以下仅是个人对问题的参考&#xff0c;具体情况视个人情况而定&#xff5e; 1. 你觉得你有哪些优点和缺点&#xff1f; 优点&#xff1a;学习能力强&#xff0c;遇到问题会主动思考和查找解决方案&#xff1b;有责任心&#xff0c;对待工作认真负责&#…...

【微知】ARM CPU是如何获取某个进程的页表的?(通过TTBR寄存器,MMU进行处理)

ARM CPU 中用于存储访问某个进程的页表的寄存器是 TTBR&#xff08;Translation Table Base Register&#xff09;。有TTBR0和TTBR1。TTBR0用户空间的一级页表基址&#xff0c;1是内核页表。cpu访存获取物理地址流程 如果mmu发现tlb里面miss就通过pdbg拿pa物理地址。Intel是CR3…...

从零开始:在Qt中使用OpenGL绘制指南

从零开始&#xff1a;在Qt中使用OpenGL绘制指南 本文只介绍基本的 QOpenGLWidget 和 QOpenGLFunctions 的使用&#xff0c;想要学习 OpenGL 的朋友&#xff0c;建议访问经典 OpenGL 学习网站&#xff1a;LearnOpenGL CN 本篇文章&#xff0c;我们将以绘制一个经典的三角形为例&…...

激光加工中平面倾斜度的矫正

在激光加工中&#xff0c;加工平面的倾斜度矫正至关重要&#xff0c;直接影响加工精度和材料处理效果。以下是系统的矫正方法和步骤&#xff1a; 5. 验证与迭代 二次测量&#xff1a;加工后重新检测平面度&#xff0c;确认残余误差。 反馈优化&#xff1a;根据误差分布修正补偿…...

Android学习总结之应用启动流程(从点击图标到界面显示)

一、用户交互触发&#xff1a;Launcher 到 AMS 的跨进程通信 1. Launcher 处理点击事件&#xff08;应用层&#xff09; 当用户点击手机桌面上的应用图标时&#xff0c;Launcher&#xff08;桌面应用&#xff09;首先捕获点击事件。每个图标对应一个启动 Intent&#xff08;通…...

rdiff-backup备份

目录 1. 服务器备份知识点 1.1 备份策略 1.2 备份步骤和宝塔面板简介 1.3 CentOS7重要目录 2. 备份工具 2.1 tar -g 备份演示 2. rsync 备份演示 3. rdiff-backup 备份演示 4. 差异和优缺点 3. rdiff-backup安装和使用 3.1 备份命令rdiff-backup 3.2 恢复命令--…...

PE结构(十五)系统调用与函数地址动态寻找

双机调试 当需要分析一个程序时&#xff0c;这个程序一定是可以调试的&#xff0c;操作系统也不例外。在调试过程中下断点是很重要的 当我们对一个应用程序下断点时&#xff0c;应用程序是挂起的。但当我们对操作系统的内核程序下断点时&#xff0c;被挂起的不是内核程序而是…...

webrtc 本地运行的详细操作步骤 1

前言 选修课的一个课程设计&#xff0c;需要我们本地运行这个开源项目&#xff0c;给我的压力非常大&#xff0c;因为确实不是很熟练这种操作。但是还是得做。谨以此文&#xff0c;纪念这个过程。 之前自己在 github 上面看到有代码仓库&#xff0c;但是比较复杂&#xff0c;在…...

kali——httrack

目录 前言 使用教程 前言 HTTrack 是一款运行于 Kali Linux 系统中的开源网站镜像工具&#xff0c;它能将网站的页面、图片、链接等资源完整地下载到本地&#xff0c;构建出一个和原网站结构相似的离线副本。 使用教程 apt install httrack //安装httrack工具 httrac…...

力扣经典算法篇-6-轮转数组

题干&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步…...

【计算机网络】Linux配置SNAT/DNAT策略

什么是NAT&#xff1f; NAT 全称是 Network Address Translation&#xff08;网络地址转换&#xff09;&#xff0c;是一个用来在多个设备共享一个公网 IP上网的技术。 NAT 的核心作用&#xff1a;将一个网络中的私有 IP 地址&#xff0c;转换为公网 IP 地址&#xff0c;从而…...

火山引擎coze用户市场

火山引擎 **Coze**&#xff08;扣子&#xff09;的用户市场主要集中在 **需要快速构建和部署智能对话应用的企业及开发者群体**&#xff0c;覆盖多个行业与场景。以下是具体分析&#xff1a; --- ### **一、核心用户群体** 1. **企业用户** - **互联网/科技公司**&#…...

qt designer 软件主题程序设计

对于使用Qt Designer设计的界面&#xff0c;主题切换的实现需要结合Qt的信号槽机制、样式表动态加载以及资源管理。以下是针对Qt Designer UI的详细解决方案&#xff1a; 一、UI文件与主题系统的整合架构 二、核心实现步骤 1. 动态样式表加载系统 // ThemeManager.h class …...

2025/4/2 心得

第一题 题目描述 给定1001个范围在[1,1000]的数字&#xff0c;保证只有1个数字重复出现2次&#xff0c;其余数字只出现1次。试用O(n)时间复杂度来求出出现2次的这个数字。 不允许用数组 输入格式 第一行&#xff1a;一个整数1001&#xff1b; 第二行&#xff1a;1001个用…...

AI安全:构建负责任且可靠的系统

AI已成为日常生活中无处不在的助力&#xff0c;随着AI系统能力和普及性的扩展&#xff0c;安全因素变得愈发重要。从基础模型构建者到采用AI解决方案的企业&#xff0c;整个AI生命周期中的所有相关方都必须共同承担责任。 为什么AI安全至关重要&#xff1f; 对于企业而言&…...