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

Ubuntu 16.04下IPython中matplotlib绘图后无法恢复终端命令行求助

解决Ubuntu 16.04下IPython中matplotlib绘图窗口关闭后终端卡住的问题

我之前在Ubuntu 16.04上也碰到过一模一样的问题,当时折腾了好久才找到根源——主要是matplotlib默认的后端和IPython的交互逻辑在这个系统版本里存在bug,导致关闭绘图窗口后终端的主线程被卡住,没法回到命令行状态。给你几个亲测有效的解决方案:

方案1:临时切换matplotlib后端

在你的代码开头先指定一个兼容性更好的后端,比如TkAgg或者Qt5Agg,再导入pyplot:

import matplotlib
matplotlib.use('TkAgg')  # 要是这个不行可以试试Qt5Agg,前提是系统装了对应依赖
from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(-1.,1.,129)
plt.plot(x,np.sin(x))
plt.show()

这样运行后关闭窗口,终端就能正常回到命令行,变量也会保留下来。

方案2:用IPython魔法命令配置交互模式

打开IPython后,先输入这条魔法命令:

%matplotlib tk

之后再运行你的绘图代码,关闭窗口后终端不会卡住,而且所有变量都能保留,想修改绘图内容直接调整代码重新运行就行。如果觉得每次打开IPython都输这个麻烦,可以把它加到IPython的配置文件里:

  1. 先生成配置文件(如果没有的话):ipython profile create
  2. 编辑~/.ipython/profile_default/ipython_config.py,找到c.InteractiveShellApp.matplotlib这一行,改成:
c.InteractiveShellApp.matplotlib = 'tk'

这样每次启动IPython都会自动启用这个交互模式。

方案3:升级matplotlib版本

Ubuntu 16.04自带的matplotlib版本可能比较旧,存在这个后端阻塞的bug,你可以尝试升级到新版:

  • 如果用pip管理包:pip install --upgrade matplotlib
  • 如果用系统源:sudo apt-get update && sudo apt-get install --upgrade python-matplotlib

升级后默认后端的问题大概率会被修复,不用额外配置就能正常使用。

简单说下原因:Ubuntu 16.04里matplotlib默认用的是GTK3Agg后端,这个后端在和IPython交互时会导致主线程无法释放,而Ubuntu 14.04用的是更稳定的旧后端(比如GTK2Agg),所以之前没出现这个问题。切换后端或者升级版本都能解决这个阻塞问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:52:45