升级到 ubuntu 20.04 后,我从 crontab 启动的 python 脚本中收到此错误:
Unable to init server: Could not connect: Connection refused
Unable to init server: Could not connect: Connection refused
(generate_clocks_graphs.py:4888): Gdk-CRITICAL **: 17:13:03.280: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
有没有办法更好地理解这个错误?我找不到解决方案 奇怪的是,如果我手动运行脚本,它会完美运行
查看代码,我意识到我没有添加以下代码行:
import matplotlib
matplotlib.use('Agg')
输入它们后,脚本也可以运行 crontab
谢谢你
Matplotlib 后端依赖于某些后端来实际渲染绘图。默认后端是
agg
后端。该后端仅渲染 PNG。 Matplotlib 后端文档
#Three lines to make our compiler able to draw:
import sys
import matplotlib
matplotlib.use('Agg')
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
df.plot()
plt.show()
#Two lines to make our compiler able to draw:
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
此代码在w3schools
中执行上述解决方案对我不起作用。但如果你尝试使用虚拟环境,它应该会消失。
python3 -m venv venv
source venv/bin/activate
pip install numpy matplotlib
然后从 venv 中运行脚本。