You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过crontab运行Python虚拟环境时plt.show()无法显示图表如何解决

问题原因

Crontab执行脚本时处于无图形界面的环境,默认未加载X11显示服务的环境变量,而plt.show()依赖图形界面后端渲染窗口,因此无法正常显示图表。直接在终端运行时,脚本继承了当前桌面会话的DISPLAY环境变量,能找到X服务器,所以可以正常显示。

解决方法

方法1:在Crontab中指定DISPLAY环境变量

修改crontab的执行命令,在Python脚本路径前添加DISPLAY=:0(Ubuntu桌面默认显示编号为:0):

* * * * * DISPLAY=:0 /home/user/Desktop/dailyreports/env/bin/python3 /home/user/Desktop/dailyreports/test.py

方法2:在Python脚本中显式配置显示环境

在导入matplotlib之前,设置DISPLAY变量并指定可用的图形后端:

import os
# 指定桌面显示编号
os.environ['DISPLAY'] = ':0'
# 设置matplotlib使用支持GUI的后端(比如TkAgg或Qt5Agg)
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

plt.plot()
plt.show(block=True)
plt.savefig("/home/user/Desktop/test.png")

补充说明

  • 如果TkAgg后端不可用,可以尝试Qt5Agg或GTK3Agg,这些都是Ubuntu桌面常见的图形后端。
  • 若遇到X服务器权限问题,可临时运行xhost +local:开放本地用户访问权限(不建议长期保持该设置)。

内容的提问来源于stack exchange,提问作者Inglorious_basterd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 06:23:10