matplotlib - 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 工作区,所有这些都在今天之前工作。
解决方案
VSCode 在我的 Linux 系统上看不到我的 DISPLAY 环境变量,因此它无头运行。我可以通过在 vscode 终端窗口中给出命令“export DISPLAY=:0”来制作绘图。我想让这自动发生,但我不知道如何实现。
我发现这一点的方法是在我的 python 脚本中插入“matplotlib.use("TKAgg")”。这引发了一条消息,说我正在无头运行。
我找到 DISPLAY 正确值的方法是在 vscode 之外的终端窗口中检查该变量。
当我在 vscode Github 页面上报告这个问题时,我发现了禁用所有扩展的建议。当我这样做时,我不必设置 DISPLAY。然后我去重新启用所有扩展,并且绘图仍然有效,所以看起来修复是禁用和重新启用所有扩展。
推荐阅读
- javascript - 基础层更改后的 setDrawingOptions Leaflet Draw
- javascript - 如果 Value null 做某事
- android - android studio 结构搜索并用正则表达式替换搜索模板
- postgresql - 通过 Azure ARM 模板将 VNET 规则添加到 PostgreSQL 服务器
- javascript - Redux 不会立即更新状态
- javascript - 来自内部函数的javascript未定义标签
- javascript - 在进度事件上处理分块的 JSON?
- vb.net - 由我的应用程序启动时进程未运行且控制台窗口为空白
- postgresql - 排除约束 `EXCLUDE USING gist (c WITH &&)` 是什么意思?
- rethinkdb - rethinkdb 中是否有任何内置机制可以将对象数组转换为键值?