已经安装了三次matplotlib,仍然出现错误:ImportError: No module named backends.backend_wxagg

3

我已经完全安装和重新安装了matplotlib三次,采用了三种不同的方法。如果我打开IDLE,它会允许我添加import matplotlib,但是一旦我尝试从matplotlib网站运行示例代码时,总是会出现错误,特别是在使用约定时:

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.path import Path
from matplotlib.spines import Spine
from matplotlib.projections.polar import PolarAxes
from matplotlib.projections import register_projection

从这个声明中,它可以是任何东西。唯一的问题是出现一个错误,说

导入错误:找不到模块backends.backend_wxagg

Anon@TBCC-DELL-Mobile1:/home/tjohnson/python# python matplotlib.py
Traceback (most recent call last):
  File "matplotlib.py", line 16, in <module>
    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
  File "/home/tjohnson/python/matplotlib.py", line 16, in <module>
    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
ImportError: No module named backends.backend_wxagg

Anon@TBCC-DELL-Mobile1:/home/tjohnson/python# python radar_chart.py
Traceback (most recent call last):
  File "radar_chart.py", line 14, in <module>
    import matplotlib.pyplot as plt
  File "/home/tjohnson/python/matplotlib.py", line 16, in <module>
    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
ImportError: No module named backends.backend_wxagg

我尝试了几个不同版本的matplotlib,但结果仍然相同。有什么建议吗?

在Anaconda环境中运行代码,一切都顺利进行...那么我做错了什么? - t gillespie
在像anaconda这样的虚拟环境中运行往往更干净、更安全。您是否有不在anaconda中运行的充分理由? - Steven C. Howell
是的,在Anaconda中没有wxPython :) 如果我想在一个jar文件中运行它,最好在稍后的jar文件中运行它,比如qemu -> Raspberry Pi :) 或者在可刮擦的容器中,比如虚拟机箱。 - t gillespie
你可以尝试使用Enthought Canopy作为另一个出色的虚拟Python环境(https://www.enthought.com/products/canopy/)。他们内置了包管理器和出色的支持。此链接提供了有关在Canopy中使用wxpython的信息:https://support.enthought.com/entries/22601196-wxPython-2-8-and-2-9 - Steven C. Howell
当你说“打开空闲”时,你是什么意思?你是如何运行Python的?你可能需要检查你正在运行的Python是否与你安装Matplotlib的Python版本相同。 - Steven C. Howell
显示剩余2条评论
5个回答

1
似乎存在与系统Python安装相关的冲突。也许系统Python无法看到matplotlib安装。您还可以检查已安装文件的权限。您正在使用哪个操作系统以及使用何种方法安装matplotlib(pip、apt-get、setup.py或构建二进制文件)?请尝试打开Python shell并简单导入matplotlib:
>>> import matplotlib as mpl

首先我安装了apt-get,然后撤销apt-get,接着是pip,再撤销pip,最后从源代码编译,但没有改变。我使用的是Debian稳定版(我想应该是wheezy)。现在我应该检查哪些文件的权限?因为这样的话,我可能有20个matplotlib文件夹;)我不会卸载Python……如果我这样做的话,那么今晚我要花费大量时间来重新组装我的电脑,因为它依赖于Python 2.7的约450个包。它允许我在控制台和脚本中导入matplotlib,但之后就不行了……一晚上都是这种情况。 - t gillespie
在你目前的情况下,为了解决问题,我强烈建议使用像Anaconda这样的虚拟环境。它可以让你将系统中的Python与开发环境分开。 - Steven C. Howell
1
如果您能够运行 import matplotlib as mpl,那么您可以运行 mpl.__path__ 来查看它实际导入的位置。然后,您可以使用标准的 bash shell 导航到该目录并使用 ls -l 检查权限。我的 matplotlib 目录中大多数 *.py 文件的权限和所有权都为 -rw-r--r-- 1 root root。如果三个权限中至少有一个不是 r,那肯定会出现问题。 - Steven C. Howell

1

我在尝试在 Fedora 上运行 Ardupilot SiTL 时遇到了问题。 根据 Friedrich 的建议,运行 sudo dnf install python3-matplotlib-wx 解决了这个问题。


1
在openSuse中,backend_wxagg的ImportError问题已经得到解决。
zypper in python2-matplotlib-wx

根据您的系统,可能是另一个软件包管理器(apt、yum等)。

0

0

我也遇到了同样的问题。首先,我检查了 import sys sys.path 来查看它搜索已安装包的文件夹。

我的结果大致如下。

['',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\python36.zip',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\DLLs',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\lib',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36',
 'C:\\Users\\gsotiropoulos\\AppData\\Roaming\\Python\\Python36\\site-packages',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\lib\\site-packages',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\lib\\site-packages\\win32',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\lib\\site-packages\\win32\\lib',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\lib\\site-packages\\Pythonwin',
 'C:\\Users\\gsotiropoulos\\AppData\\Local\\conda\\conda\\envs\\py36\\lib\\site-packages\\IPython\\extensions',
 'C:\\Users\\gsotiropoulos\\.ipython']

然后,如建议的那样,我import matplotlib as mplmpl.__path__,看到我从文件夹'C:\\Users\\gsotiropoulos\\AppData\\Roaming\\Python\\Python36\\site-packages'导入matplotlib,这不是anaconda的文件夹,而且它已经过时了。我不确定是否最好完全删除此文件夹。

但是,据我所知,Python首先在那里搜索并找到了一个过时的matplotlib包。我只是将“matplotlib”的名称更改为类似于“matplotlib_test”的内容,然后库从anaconda文件夹之一安装,问题得到解决。

我想知道是否应该删除“漫游”文件夹以避免类似的其他问题。


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