如何降级numpy?

7 python numpy jupyter-notebook

我有错误

TypeError: slice indices must be integers or None or have an __index__ 
method
Run Code Online (Sandbox Code Playgroud)

并搜索解决方案,并得到我需要降级numpy的版本,然后尝试使用此命令

python
import numpy 
numpy.__version__
Run Code Online (Sandbox Code Playgroud)

并得到

>>> numpy.__version__
'1.14.5'
Run Code Online (Sandbox Code Playgroud)

但是当我使用

pip show numpy
Name: numpy
Version: 1.11.0
Summary: NumPy: array processing for numbers, strings, records, and 
objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: numpy-discussion@scipy.org
License: BSD
Location: /usr/local/lib/python3.4/dist-packages
Requires: 
Required-by: 
Run Code Online (Sandbox Code Playgroud)

现在python使用的是什么版本?

指令

$ python3 -m pip --version
$ pip --version 
pip 18.0 from /usr/local/lib/python3.4/dist-packages/pip (python 3.4)
Run Code Online (Sandbox Code Playgroud)

$ python -m pip --version
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
Run Code Online (Sandbox Code Playgroud)

Jam*_*Lim 9

您可能会在python2,python3和不同的python 虚拟环境之间感到困惑。

在您的情况下,这是最可靠的来源

$ python
>>> import numpy
>>> numpy.__version__
'1.14.5'
Run Code Online (Sandbox Code Playgroud)

要升级/降级numpy,您需要使用pippython您正在使用的相对应的numpy 。我认为您使用的是python 2.7。在处查找pip与已安装的软件包相对应的可执行文件/usr/local/lib/python2.7/dist-packages/pip

这不是“正确”的方法,但是会起作用

python -m pip install numpy==x.y.z
Run Code Online (Sandbox Code Playgroud)
  • python 只会对应您正在使用的python解释器
  • -m pip 将找到与您安装的python 2.7相对应的正确点
  • numpy==x.y.z 将迫使降级

现在,您可能会遇到权限问题,这将诱使您使用sudo。此时,您可以尝试添加--user标志...,但是如果确实需要使用sudo,则可以考虑创建virtualenv。(请。)

可能正确的做法

其他人对此发表了评论:也许您的索引实际上不是整数。

(相关:切片索引必须为整数或无,或具有__index__方法

在代码中找到索引到列表中的位置,并确保它们实际上是整数。

assert isinstance(a, int), 'a must be an int'
assert isinstance(b, int), 'b must be an int'
x = y[a:b]
Run Code Online (Sandbox Code Playgroud)

继续添加这些类型断言,直到找到错误为止。


joh*_*y 5 8

您可以使用 --upgrade 标志降级它可以双向工作,例如

pip install --upgrade numpy==1.10.1
Run Code Online (Sandbox Code Playgroud)


aba*_*ert 3

我怀疑您是否真的需要或想要降级 NumPy。

\n\n

但这不是您问题的真正目的。您想知道为什么pip展示一件事而python展示另一件事,以及您可以对此做些什么。

\n\n
\n\n

你看到不同的东西的原因是你的pip不符合你的python

\n\n

当您运行 时python,这就是您的 Python 2.7,并且您的软件包import来自 2.7 库,位于/usr/local/lib/python2.7/

\n\n

当您运行pip它时,将使用 Python 3.4,并在 Python 3.4 的库(位于/usr/local/lib/python3.4/.

\n\n

因此,pip show numpy我们向您展示 Python 3.4 所具有的 NumPy 版本,它完全独立于 Python 2.7 所具有的 NumPy 版本。

\n\n

如果您不打算使用 Python 2.7,解决方案是运行 Python 3.4,通常只需使用python3代替python.

\n\n

如果您确实打算使用 Python 2.7,解决方案是使用pip它附带的版本。您可能有一个名为pip2pip2.7的命令,但最安全的方法是python -m pip使用pip.

\n\n
\n\n

附带说明一下,鉴于您的 3.4 NumPy 安装位置,看起来您可能已经做了类似apt-get python3-numpyyum python-numpy类似的操作来安装它,而不是pip install numpy。可能还需要apt-get python2-numpy获得 2.7 版本。如果是这样,您可能需要按照最初安装的方式降级或升级它,使用发行版的包管理器,而不是使用pip. 如果不是\xe2\x80\xa6则忽略本段。

\n\n
\n\n

如果这一切看起来太复杂,但您确实需要同时拥有 Python 2.7 和 Python 3.4,那么您应该考虑两件事:

\n\n
    \n
  • 始终使用虚拟环境。只要有可能,就不要全局安装任何东西;选择一个环境来安装它。无论哪个环境处于活动状态,python并且pip都适用于该环境。
  • \n
  • 安装最新版本的 Anaconda 和最新版本的 Python(截至目前为 3.7),然后要求其安装 3.4 和 2.7 conda 环境。使用这些环境,甚至永远不要碰你的系统 3.4 和 2.7。
  • \n
\n