在Anaconda修复matplotlib/numpy依赖地狱

jez*_*jez 6 numpy matplotlib python-2.7 anaconda conda

我在MacBook上运行Anaconda 2.0.0(x86_64)下的Python 2.7.11.

几周前,作为让OpenCV工作的过程的一部分,我numpy从任何地方(不幸/愚蠢地没有记录)降级到1.7.1.我似乎记得这是必要的,我不希望OpenCV停止工作,所以我很确定我现在应该离开numpy它.

但是,今天我发现这已经打破了我matplotlib/ pylab.当我这样做时,import pylab我得到以下内容:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
RuntimeError: module compiled against API version 9 but this version of numpy is 7
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)    
...
...
ImportError: numpy.core.multiarray failed to import
Run Code Online (Sandbox Code Playgroud)

因此,我的问题是:如何安装(或回滚)matplotlib与现有版本兼容的版本numpy,而不会打扰我现有的版本numpy

这是我到目前为止所处的位置:基于condaSO的相关问题,我查看其输出conda list --revisions matplotlib包括:

...
2016-03-28 17:16:36  (rev 6)
     conda  {3.8.3 -> 4.0.5}
     conda-env  {2.0.1 -> 2.4.5}
     numpy  {1.8.1 -> 1.7.1}
     ...
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何解释这个,但鉴于numpy版本号看起来实际上与其他所有条目形成鲜明对比,这听起来像是一个充满希望的,"2016年3月matplotlib意识到它可能会回到早期其numpy依赖的版本".但是,当我要求进行此修订时:

conda install --revision=6 matplotlib
Run Code Online (Sandbox Code Playgroud)

我被告知我已经拥有它,并且它的依赖性是numpy1.8:

Fetching package metadata: ....

# All requested packages already installed.
# packages in environment at /Users/jez/anaconda:
#
matplotlib                1.3.1                np18py27_1    <unknown>
Run Code Online (Sandbox Code Playgroud)

所以从这里开始我不知道如何继续.我试探性地玩了一些变化conda install matplotlib,但它显然想要同时弄乱我numpy,所以我从来没有按过y.同样清楚的是,我不在自己的深处conda,所以非常感谢你的帮助.

jak*_*vdp 7

您可以在conda install命令中指定所需库的确切版本.例如:

$ conda install numpy=1.7.1 matplotlib=1.3
Run Code Online (Sandbox Code Playgroud)

如果版本不兼容,该命令将给出错误指定不兼容性的错误.