wxPython 导入错误

12 投票
10 回答
17780 浏览
提问于 2025-04-16 12:33

我在理解Python中的一个错误信息时遇到了困难。

昨天,我使用最新的EPD包安装了Python,并且为Mac OS安装了wxPython2.9,使用的是wxPython2.9-osx-cocoa-py2.7这个包。然后我把wx添加到了我的PYTHONPATH中。

export WXDIR=/usr/local/lib/wxPython-2.9.1.1/lib/python2.7/site-packages/wx-2.9.1-osx_cocoa
export PYTHONPATH=$WXDIR
export PYTHONPATH=$PYTHONPATH:$WXDIR/tools

但是当我尝试运行一些代码时,出现了这个错误:

In [14]: import matplotlib.pyplot
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)

/Users/imrisofer/Documents/third/hddm-read-only/hddm/<ipython console> in <module>()

/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/matplotlib/pyplot.py in <module>()
     93 
     94 from matplotlib.backends import pylab_setup
---> 95 new_figure_manager, draw_if_interactive, show = pylab_setup()
     96 
     97 @docstring.copy_dedent(Artist.findobj)

/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/matplotlib/backends/__init__.py in pylab_setup()
     23         backend_name = 'matplotlib.backends.%s'%backend_name.lower()
     24     backend_mod = __import__(backend_name,
---> 25                              globals(),locals(),[backend_name])
     26 
     27     # Things we pull in from all backends


/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/matplotlib/backends/backend_wxagg.py in <module>()
     21 
     22 from backend_agg import FigureCanvasAgg
---> 23 import backend_wx    # already uses wxversion.ensureMinimal('2.8')
     24 from backend_wx import FigureManager, FigureManagerWx, FigureCanvasWx, \
     25     FigureFrameWx, DEBUG_MSG, NavigationToolbar2Wx, error_msg_wx, \

/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/matplotlib/backends/backend_wx.py in <module>()
     43         import wxversion
     44     except ImportError:
---> 45         raise ImportError(missingwx)
     46 
     47     # Some early versions of wxversion lack AlreadyImportedError.


ImportError: Matplotlib backend_wx and backend_wxagg require wxPython >=2.8

我可以成功导入wx,所以我不知道问题出在哪里。我的PYTHONPATH里是不是缺少了什么?

10 个回答

4

在导入任何wx模块之前,先选择你的wx版本。

import wxversion
wxversion.select('2.8')

上面的代码应该在import wx之前写。

5

我在使用Ubuntu 13.10、Canopy 1.2和PyCharm 3.0.2的时候,想用matplotlib这个库,但总是出现一个错误,提示“Matplotlib backend_wx和backend_wxagg需要wxPython版本大于等于2.8”。我很确定我用的是wxPython 2.8。然后我尝试了这个页面上描述的所有方法,但都没有解决我的问题。

后来我发现可以通过修改matplotlibrc文件来解决这个问题。这个文件里有一行:

backend : WXAgg

其实我们可以把这个backend(后端)改成我们喜欢的任何值,我把它改成了TKAgg,这样就能正常工作了。

15

在Ubuntu 12.04系统中,可以通过运行以下命令来解决这个问题:

sudo apt-get install libjpeg62

我知道这可能在这里没什么用,但我想把它记录在网上的某个地方,这样当我自己再次遇到这个问题时,就能找到它,因为这肯定会发生。

撰写回答