下面的例子:
import logging
import matplotlib.pyplot as plt
import matplotlib.pyplot as mpl
mpl.rc('font', family='serif', serif="DejaVu Serif")
mpl.rc('text', usetex=True)
# Set up logging module
level = logging.INFO
frmt = '%(message)s'
handlers = [
logging.FileHandler("test.log", mode='a'),
logging.StreamHandler()]
logging.basicConfig(level=level, format=frmt, handlers=handlers)
fig = plt.figure()
plt.scatter(.5, .5)
plt.xlabel("test label")
plt.savefig("del.png")
会产生几十个警告
No LaTeX-compatible font found for the serif fontfamily in rcParams. Using default.
如果我注解掉serif="DejaVu Serif"
参数,所有这些都消失了,输出显然保持完全相同。我也可以保留该参数并注解掉logging
块,警告也消失了。
我正在运行elementary OS(基于Ubuntu 22.04.3),显然安装了所有必需的字体和LaTeX包。
这是logging
模块和我的系统字体之间的冲突吗?这是logging
和LaTeX的问题吗?这里发生了什么?
1条答案
按热度按时间bd1hkmkf1#
您配置的处理程序本身并不使用字体--它们只是输出文本消息。(在
basicConfig()
调用之后从代码中调用),但除非配置日志记录,否则它们不会显示。(生成了消息,但没有出现,因为没有日志处理程序输出它们),或者如果删除serif=
参数(在这种情况下,事件不会被记录)。我建议您保留这两个字段,并将格式字符串
frmt
更改为包括%(name)s
和%(levelname)s
,以便查看消息被记录在何处以及以何种严重性记录。这应该给予一个更好的想法。