2010-06-14 111 views
1

我使用适用于MacOS 10.5和Python 2.5的Mac磁盘映像安装程序安装了matplotlib。我安装numpy然后试图导入matplotlib但得到这个错误:ImportError: numpy 1.1 or later is required; you have 2.0.0.dev8462。看来版本2.0.0.dev8462会晚于版本1.1,但我猜测matplotlib与版本中的“.dev8462”混淆了。有没有解决这个问题的方法?无法导入matplotlib

+1

Numpy 2.0不与matplotlib向后兼容,如果您尝试在其上运行matplotlib,它将会*崩溃。如果你想运行numpy 2. *,你需要重建每个使用numpy C API(matplotlib,scipy等)的包。 – 2010-06-14 06:40:37

回答

1

这里是位于Lib/site-packages/matplotlib/__init__.py在我的Python分布Windows上的麻烦的代码

nn = numpy.__version__.split('.') 
if not (int(nn[0]) >= 1 and int(nn[1]) >= 1): 
    raise ImportError(
      'numpy 1.1 or later is required; you have %s' % numpy.__version__) 

的问题是,它需要同时第一至数字(由句点分隔)为大于或等于1在你的情况下,第二位是2.您可以绕过这在许多方面,但一个办法就是if语句改为

if not ((int(nn[0]) >= 1 and int(nn[1]) >= 1) or int(nn[0]) >= 2): 

,或者你可以只将其更改为:

if not (float('.'.join(nn[2:])) >= 1.1): 

这可能会更好。

+0

+1。但是这是一个更简单的版本:'(int(nn [0]),int(nn [1]))> =(1,1)'。实际上,元组与所谓的“字典顺序”相比较。 – EOL 2010-06-14 08:41:54

0

继贾斯汀的评论...这里是Linux的相应文件:

/usr/lib/pymodules/python2.6/matplotlib/__init__.py

sudo的编辑来解决麻烦的线路: 如果不是((INT(NN [0])> = 1和int(nn [1])> = 1)或int(nn [0])> = 2):

谢谢Justin Peel!