来自matplotlib.backends import _tkagg ImportError:无法导入名称_tkagg

时间:2015-08-24 17:29:34

标签: python matplotlib pip virtualenv tk

在尝试运行this示例来测试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

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

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

然后再次通过pip install matplotlib重新安装matplotlib 但我仍然得到同样的错误。任何帮助,将不胜感激。我在VirtualBox上使用Ubuntu 14.04并在virtualenv环境中工作。 非常感谢。

4 个答案:

答案 0 :(得分:26)

我刚刚碰到了这个(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。 (遗憾的是,我无法找到一种方法来清理缓存。)

答案 1 :(得分: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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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