在Ubuntu 12.04上通过pip安装matplotlib

时间:2014-09-02 15:30:02

标签: python matplotlib ubuntu-12.04

我正在尝试在Ubuntu 12.04上使用matplotlib。所以我用pip制作了一个轮子:

python .local / bin / pip wheel --wheel-dir = wheel / --build = build / matplotlib

然后成功安装了它:

python .local / bin / pip install --user --no-index --find-links = wheel / --build = build / matplotlib

但是当我试图在ipython中导入它时会发生导入错误:

  

在[1]中:导入matplotlib

     

在[2]中:matplotlib.get_backend()
  出[2]:u'agg'

     

在[3]中:导入matplotlib.pyplot

     

导入错误
  追溯(最近的电话   最后)/ place / home / yefremat / in   ()   ----> 1导入matplotlib.pyplot

     

/home/yefremat/.local/lib/python2.7/site-packages/matplotlib/pyplot.py   in()        32来自matplotlib import docstring        33来自matplotlib.backend_bases导入FigureCanvasBase   ---> 34来自matplotlib.figure import图,figaspect        35来自matplotlib.gridspec导入GridSpec        36来自matplotlib.image import imread as _imread

     

/home/yefremat/.local/lib/python2.7/site-packages/matplotlib/figure.py   in()        38将matplotlib.colorbar导入为cbar        39   ---> 40来自matplotlib.axes导入Axes,SubplotBase,subplot_class_factory        41来自matplotlib.blocking_input导入BlockingMouseInput,BlockingKeyMouseInput        42来自matplotlib.legend导入传奇

     

/home/yefremat/.local/lib/python2.7/site-packages/matplotlib/axes/的初始化的.py   in()         2 unicode_literals)         3   ----> 4来自._subplots导入*         5来自._axes import *

     

/home/yefremat/.local/lib/python2.7/site-packages/matplotlib/axes/_subplots.py   in()         8来自matplotlib import docstring         9导入matplotlib.artist作为战士   ---> 10来自matplotlib.axes._axes导入Axes        11        12个进口警告

     

/home/yefremat/.local/lib/python2.7/site-packages/matplotlib/axes/_axes.py   in()        36将matplotlib.ticker导入为mticker        37将matplotlib.transforms导入为mtransforms   ---> 38导入matplotlib.tri作为mtri        39导入matplotlib.transforms为mtrans        40来自matplotlib.container导入BarContainer,ErrorbarContainer,StemContainer

     

/home/yefremat/.local/lib/python2.7/site-packages/matplotlib/tri/的初始化的.py   in()         7进口六         8   ----> 9来自.triangulation导入*        10来自.tricontour import *        11来自.tritools import *

     

/home/yefremat/.local/lib/python2.7/site-packages/matplotlib/tri/triangulation.py   in()         4进口六         五   ----> 6导入matplotlib._tri作为_tri         7将matplotlib._qhull导入为_qhull         8导入numpy为np

     

导入错误:   /home/yefremat/.local/lib/python2.7/site-packages/matplotlib/_tri.so:   未定义的符号:_ZNSt8__detail15_List_node_base9_M_unhookEv

可能是我做错了吗?或者可能有办法关闭matplotlib的gui支持?

提前致谢。

1 个答案:

答案 0 :(得分:0)

好的,问题出在gcc版本中。在构建和创建包的pip期间使用系统gcc(版本是4.7.2)。我正在使用virtualenv的python,它是用gcc 4.4.3构建的。因此,libstdc ++库的版本在IPython中是不同的,并且使用了一个pip。

一如既往有两种解决方案(甚至更多):在进入IPython之前,使用正确的libstdc ++传递LD_PRELOAD环境变量,或者在创建wheel和构建virtualenv期间使用相同版本的gcc。我推出了最后一个。

谢谢大家。