【问题标题】:How can I stop numpy_1.8 from masking numpy_1.10?如何阻止 numpy_1.8 屏蔽 numpy_1.10?
【发布时间】:2016-03-22 00:41:22
【问题描述】:

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

import numpy
numpy.__version__

我明白了

'1.8.2'

我希望在 1.10 版本之后的某个时间安装 1.8.2,因为我最近安装了一些新包,现在当我运行一些以前可以工作的代码时,我收到了这个错误:

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?这是一个合理的方法吗?

【问题讨论】:

  • 好的 - 我想使用 virtualenv,或者 Docker 会帮助我,但我仍然需要弄清楚现在该做什么。

标签: python numpy pythonpath sys.path


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,但据我所知,这只适用于 python 解释器的单次调用。每当我加载需要 numpy_1.10 的模块时,我都不想记住这一点
  • @user1245262;您对这个解决方案的前半部分有何反对?
  • 当我尝试使用 synaptic 删除 numpy_1.8 时,它列出了其他几个依赖于 numpy_1.8 的软件包,这些软件包将被删除。如果我只是使用 rm -rf 删除 numpy_1.8 所在的目录,那么依赖它的包会发生什么?会自行查找 numpy_1.10 还是我会启动一系列需要删除和重新安装的软件包?
  • 出于这些原因,我更喜欢使用 pip 而不是操作系统工具来管理我的 Python 软件。级联中有多少个包?
  • 我现在不知道,但我记得大约是 10 到 20 岁。
猜你喜欢
  • 1970-01-01
  • 2019-11-03
  • 2022-08-18
  • 2015-07-20
  • 1970-01-01
  • 2011-03-04
  • 2011-08-11
  • 2017-07-02
  • 2012-08-18
相关资源
最近更新 更多