首页 > 解决方案 > matplotlib 绘图在 vscode 中静默失败,但在同一环境中从 python 解释器工作

问题描述

直到今天,matplotlib 还在使用 vscode。今天我将vscode更新到最新版本,发现绘图不起作用。它们使用 python 解释器在相同的虚拟环境中工作,但不是来自 vscode。我回滚到 matplotlib 和 vscode 的早期版本,但它仍然不起作用。这是我要绘制的代码:

import matplotlib
import matplotlib.pyplot as plt
plt.plot([1,2],[3,4])
plt.show()

vscode的版本是1.53.2,matplotlib的版本是3.3.4

如果我调用 plt.savefig,它会保存图形。它只是不以交互方式显示。我已经尝试过使用多个虚拟环境和多个 vscode 工作区,所有这些都在今天之前工作。

标签: matplotlibvisual-studio-code

解决方案


VSCode 在我的 Linux 系统上看不到我的 DISPLAY 环境变量,因此它无头运行。我可以通过在 vscode 终端窗口中给出命令“export DISPLAY=:0”来制作绘图。我想让这自动发生,但我不知道如何实现。

我发现这一点的方法是在我的 python 脚本中插入“matplotlib.use("TKAgg")”。这引发了一条消息,说我正在无头运行。

我找到 DISPLAY 正确值的方法是在 vscode 之外的终端窗口中检查该变量。

当我在 vscode Github 页面上报告这个问题时,我发现了禁用所有扩展的建议。当我这样做时,我不必设置 DISPLAY。然后我去重新启用所有扩展,并且绘图仍然有效,所以看起来修复是禁用和重新启用所有扩展。


推荐阅读