从matplotlib.backends导入_tkagg时出错:无法导入名称_tkagg。

18

在尝试运行此示例以测试matplotlib如何与Tkinter配合使用时,出现以下错误:

请提供更多上下文或错误信息以获取更准确的帮助。

(env)fieldsofgold@fieldsofgold-VirtualBox:~/new$ python test.py
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
  File "/home/fieldsofgold/new/env/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 13, in <module>
    import matplotlib.backends.tkagg as tkagg
  File "/home/fieldsofgold/new/env/local/lib/python2.7/site-packages/matplotlib/backends/tkagg.py", line 7, in <module>
    from matplotlib.backends import _tkagg
ImportError: cannot import name _tkagg

使用这里提供的解决方案,我尝试通过以下命令卸载matplotlib并安装tk和tk-dev软件包:

sudo apt-get install tk8.5
sudo apt-get install tk-dev

然后通过pip install matplotlib重新安装matplotlib,但我仍然遇到相同的错误。非常感谢任何帮助。我在VirtualBox上使用Ubuntu 14.04,并在虚拟环境中工作。

5个回答

28

我刚遇到了这个问题(在Ubuntu 15.10上,但是解决方法相同),并通过以下方式修复:

sudo apt-get install tk-dev
pip uninstall -y matplotlib
pip --no-cache-dir install -U matplotlib

我认为第三步是关键的一步;如果允许缓存,那么pip似乎只是使用以前构建的matplotlib的安装。

您还可以手动删除以前构建的matplotlib;在Ubuntu上,它存在于某个地方的~/.cache/pip中。(不幸的是,我找不到pip清理其缓存的方法。)


我发现使用Ubuntu软件包并运行apt-get install python-matplotlibpython3-matplotlib最为方便。 - luka5z

18

我在Windows 10上使用Python 3.7.4,将NavigationToolbar2TkAgg替换为NavigationToolbar2Tk可以让它正常工作。

从:

from matplotlib.backends.backend_tkagg import ( FigureCanvasTkAgg, NavigationToolbar2TkAgg)

到:

from matplotlib.backends.backend_tkagg import ( FigureCanvasTkAgg, NavigationToolbar2Tk)


1
尝试按照以下情境进行操作:
sudo apt-get update

sudo apt-get install tk tk-dev

sudo pip uninstall matplotlib 

sudo pip install matplotlib

编辑:

尝试:

sudo pip uninstall matplotlib 

sudo apt-get install python-matplotlib

EDIT2:
sudo apt-get install tk8.6-dev

sudo apt-get remove python-matplotlib

sudo apt-get install python-matplotlib

嗯,卸载得很好。但在运行 sudo apt-get install python-matplotlib 命令后,它会提示“python-matplotlib 已经是最新的版本。”、“0 个已升级,0 个新安装项,0 个要删除,515 个未升级。”。不过从解释器中可以正常导入 matplotlib。但是它仍然无法正常工作。 - QPTR
奇怪,tk和tk-dev是否被正确安装了? - YOBA
不,我想你是对的,我能想到的唯一问题就是当构建时matplotlib找不到tk,在我的情况下,使用tk8.6-dev没问题,请试一下:再次运行sudo apt-get install tk8.6-dev,然后sudo apt-get remove python-matplotlib,最后sudo apt-get install python-matplotlib。 - YOBA
如果您在存储库中找到它们,那么请注意,在Ubuntu 14.04中,8.5版本与matplotlib不兼容。 - YOBA
1
无法工作。我应该尝试使用pip安装matplotlib吗? - QPTR
显示剩余6条评论

1

在Python 3.8.5(MacOS Catalina)中,用NavigationToolbar2Tk替换NavigationToolbar2TkAgg也可以工作。


1

对于这个问题的一个答案表明,错误是由于缺少 Visual Studio 2015 的 Visual C++ Redistributable 导致的。安装它解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接