解决Linux上的jupyterlab缺少SimHei的问题(适用于所有Linux系统)(2023)

简单的说,由于没有对应字体,导入

复制代码
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 

报错

findfont: Font family 'SimHei' not found

此处需要执行

复制代码
import os
import shutil
import urllib.request
import matplotlib

# 设置字体文件的URL和目标文件路径
font_url = "https://github.com/StellarCN/scp_zh/raw/master/fonts/SimHei.ttf"
target_font_path = os.path.join(matplotlib.get_data_path(), "fonts/ttf/SimHei.ttf")

# 下载字体文件
urllib.request.urlretrieve(font_url, target_font_path)

# 找到matplotlibrc文件的路径
matplotlibrc_path = matplotlib.matplotlib_fname()
# 获取matplotlibrc文件所在的文件夹路径
matplotlibrc_dir = os.path.dirname(matplotlibrc_path)

# 找到fonts/ttf目录的路径
fonts_dir = os.path.join(matplotlib.get_data_path(), "fonts/ttf")

# 删除缓存文件夹中的内容
cache_dir = matplotlib.get_cachedir()
shutil.rmtree(cache_dir, ignore_errors=True)

print("字体文件已下载到:", target_font_path)
print("matplotlibrc文件所在目录:", matplotlibrc_dir)
print("删除缓存文件夹:", cache_dir)

进行字体下载和配置,然后需要重启Python内核,此处需要在Jupyter lab中的KERNELS中删除已经存在的活动内核,重新运行ipynb文件(运行后会要求你选择使用什么内核,使用默认的就行了)。

然后字体就没问题了。

这块有自动判断需要下字体文件到哪里和删除哪里的缓存,所以理论上适用于所有Linux系统。

相关推荐
linweidong2 小时前
C++ 模块化编程(Modules)在大规模系统中的实践难点?
linux·前端·c++
invicinble6 小时前
对linux形成认识
linux·运维·服务器
小Pawn爷6 小时前
14.VMmare安装ubuntu
linux·运维·ubuntu
冷雨夜中漫步6 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
技术路上的探险家6 小时前
8 卡 V100 服务器:基于 vLLM 的 Qwen 大模型高效部署实战
运维·服务器·语言模型
郝学胜-神的一滴6 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再6 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
有谁看见我的剑了?6 小时前
介绍一款 测试 DNS解析成功率的网站
运维
半桔7 小时前
【IO多路转接】高并发服务器实战:Reactor 框架与 Epoll 机制的封装与设计逻辑
linux·运维·服务器·c++·io
绵绵细雨中的乡音7 小时前
深入理解 ET 与 LT 模式及其在 Reactor 模型中的应用
服务器·网络·php