【问题标题】:Can't import matplotlib无法导入 matplotlib
【发布时间】:2010-06-14 04:59:21
【问题描述】:

我使用 Mac 磁盘映像安装程序为 MacOS 10.5 和 Python 2.5 安装了 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”混淆了。有什么解决方法吗?

【问题讨论】:

  • Numpy 2.0 不向后兼容 matplotlib,如果你尝试在它上面运行 matplotlib,它崩溃。如果你想运行 numpy 2.*,你需要重建每个使用 numpy C API(matplotlib、scipy 等)的包。

标签: python installation numpy matplotlib


【解决方案1】:

这是我在 Windows 上的 python 发行版中位于 Lib/site-packages/matplotlib/__init__.py 的麻烦代码

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):

这可能会更好。

【讨论】:

  • +1。但这里有一个更简单的版本:(int(nn[0]), int(nn[1])) >= (1, 1)。实际上,元组与所谓的“字典顺序”进行比较。
【解决方案2】:

根据 Justin 的评论...这里是 Linux 的等效文件:

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

sudo 编辑它以修复麻烦的行: 如果不是 ((int(nn[0]) >= 1 并且 int(nn[1]) >= 1) 或 int(nn[0]) >= 2):

感谢贾斯汀·皮尔!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多