如何阻止 numpy_1.8 屏蔽 numpy_1.10?

How can I stop numpy_1.8 from masking numpy_1.10?

我以为我使用的是最新版本的 numpy (1.10) 至少,当我 运行 pip list 我看到 numpy (1.10.4)。但是,当我进入 python 解释器并输入

import numpy
numpy.__version__

明白了

'1.8.2'

我希望 1.8.2 在 1.10 版本之后的某个时间安装,因为我最近安装了一些新的软件包,现在当我 运行 一些曾经有效的代码时,我得到了这个错误:

RuntimeError: module compiled against API version a but this version of numpy is 9

OpenCV 2.4.8: module compiled against API version 9 接受的答案中提到 numpy 团队将版本 1.8 称为 numpy 版本 9。所以,我认为我最初使用的是 numpy_1.10,但不知何故得到了 numpy_1.8 安装。

我的第一个问题是这是怎么发生的,我该如何防范?

我也想知道如何阻止 numpy_1.8 阻止 1.10。我最初的想法是使用 apt-get 删除 numpy_1.8,但这会删除许多其他依赖于 1.8 的包。

我很想只使用 rm 来摆脱 1.8 版本,但我担心其他软件包会受到影响。

我的第二个想法是更改 sys.path 以确保在 1.8 版本之前看到 1.10 版本。到目前为止,我没有使用 PYTHONPATH。有没有办法在不使用 PYTHONPATH 的情况下更改 sys.path?这是一个合理的方法吗?

最简单的做法是删除 NumPy 1.8 安装。查看 numpy.__file__ 找到您的 1.8 安装位置,然后删除该目录。

或者,正如您提到的,如果您不想删除 1.8,您也可以更改路径。应该这样做:

import sys
sys.path.insert(3, '<path_to_your_NumPy_1.10_install>')

我在位置 3 处插入,这样您就可以将 '' 之类的内容保留在顶部,但您可以根据需要进行修改。