ImportError:无法加载需要“tk”交互式框架的后端“TkAgg”,因为“无头”当前正在运行

Posted

技术标签:

【中文标题】ImportError:无法加载需要“tk”交互式框架的后端“TkAgg”,因为“无头”当前正在运行【英文标题】:ImportError: Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is currently running 【发布时间】:2019-09-12 15:48:07 【问题描述】:

当我使用google colaboratory时,我遇到了这个问题,我在***上搜索过,但很少有人回答,有谁能帮我弄清楚吗?谢谢!

我尝试了多种方式重新安装matplotlib,并安装了tk-dev,都不起作用。

import matplotlib
import glob


**matplotlib.use('TKAgg')**


import matplotlib.image as mpimg

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.ticker as ticker

出现类似标题的 ImportError :“ImportError: Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is current running”

【问题讨论】:

【参考方案1】:

解决问题的方法是重新启动我的内核,首先导入以下内容:

import matplotlib
matplotlib.use('TKAgg')

那么

import matplotlib.pyplot as plt

在尝试更改为 TKAgg 之前,您可能使用另一个框架导入了 matplotlib。重新启动内核。

【讨论】:

有没有办法在不重启内核的情况下解决这个问题?【参考方案2】:

matplotlib.use('TKAgg') 可能来得太晚了(?)。我成功设置了环境变量。

export MPLBACKEND=TKAgg

真的很奇怪的错误信息。我也在 docker 容器中尝试了这个,并且还必须设置 DISPLAY。也许还有其他未报告的错误。使用 reload(matplotlib) 也没有帮助。

【讨论】:

这让我很开心!我有一个运行 python 脚本的 BASH 脚本,并在运行实际的 py 脚本之前添加了它。 试过这种方法没有成功:(还有什么想法吗?【参考方案3】:

我一次又一次地重复 matplotlib.use('TkAgg') 来解决问题。这很奇怪,但对我有用!

import matplotlib
i = 0
while i < 10:
    i += 1
    try:
        matplotlib.use('TkAgg')
        break
    except:
        print(i)

【讨论】:

【参考方案4】:

错误信息清楚地说明TkAgg 需要tkinter 库。

您可以通过在 matplotlib 之前导入 tkinter 库来修复此错误,例如:

import tkinter
import matplotlib
matplotlib.use('TkAgg')

【讨论】:

不需要明确import tkinter 我同意@gies0r,它既不能解决问题,也不需要明确添加。

以上是关于ImportError:无法加载需要“tk”交互式框架的后端“TkAgg”,因为“无头”当前正在运行的主要内容,如果未能解决你的问题,请参考以下文章

markdown ImportError:没有名为'_tkinter'的模块,请安装python3-tk包

ImportError:无法加载指定的对象 - psycopg2

在 Python 中导入 Tkinter 时出现 ImportError [重复]

ImportError:DLL加载失败:操作系统无法运行%1。 Python 2.7.12 | Anaconda 4.2.0(64位)

ImportError:无法从“sklearn.externals”导入名称“joblib”

ImportError:无法从“sklearn.externals”导入名称“joblib”