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

Ubuntu18.04下Python3.12的tkinter安装及matplotlib报错解决

解决Ubuntu 18.04下Python 3.12编译后tkinter缺失及matplotlib多进程运行问题

一、核心问题拆解

你遇到的两个错误分属两类问题:

  1. 初始报错FigureCanvasAgg is non-interactive, and thus cannot be shown:matplotlib默认使用非交互式的Agg后端,无法弹出图形窗口;
  2. 后续ModuleNotFoundError: No module named '_tkinter':源码编译Python 3.12时未正确集成tkinter依赖。

二、解决_tkinter缺失问题(针对源码编译的Python 3.12)

Ubuntu 18.04自带的python3-tk仅适配系统默认的Python 3.6,源码编译高版本Python需手动确保依赖安装并被编译流程检测到:

  1. 安装完整tk依赖
sudo apt-get update
sudo apt-get install tk-dev tcl-dev libtk-img
  1. 清理旧编译缓存(关键步骤,若之前编译过Python必须执行)
    进入Python源码解压目录,执行:
make clean
  1. 重新配置并编译Python
    配置时默认会自动检测tk依赖,执行:
./configure --enable-optimizations
make -j$(nproc)
sudo make altinstall

注意用altinstall而非install,避免覆盖系统自带Python。

  1. 验证tkinter集成结果
    启动Python 3.12,执行以下代码:
import tkinter
tkinter._test()

若弹出tk测试窗口,说明集成成功。

三、解决matplotlib多进程显示问题

无需强行导入tkinter解决初始错误,根据场景选择对应方案:

  1. 仅需生成图片文件(无窗口需求)
    直接使用Agg后端,在代码开头添加:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

绘图后用plt.savefig('output.png')保存图片,替代plt.show()。

  1. 需要弹出交互式窗口
    确保tkinter集成成功后,将matplotlib后端设置为TkAgg:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import tkinter

再运行多进程代码即可。

  1. 多进程场景额外注意
    matplotlib多进程绘图时,需保证每个进程独立初始化matplotlib,避免共享状态。官方示例已做处理,若仍有问题,可在每个进程的绘图函数内重新初始化后端设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:46:22