我遇到错误
TypeError: slice indices must be integers or None or have an __index__
method
并搜索了解决方案,发现我需要降级 numpy 的版本,然后尝试使用此命令
python
import numpy
numpy.__version__
得到了
>>> numpy.__version__
'1.14.5'
但是当我使用时
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:
现在python使用的版本是什么?
命令
$ python3 -m pip --version
$ pip --version
pip 18.0 from /usr/local/lib/python3.4/dist-packages/pip (python 3.4)
和
$ python -m pip --version
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
最佳答案
您可能对 python2、python3 和不同的 python virtual environments 感到困惑.
就您而言,这是最可靠的来源
$ python
>>> import numpy
>>> numpy.__version__
'1.14.5'
要升级/降级 numpy,您需要使用与您正在使用的 python
相对应的 pip
。我认为你使用的是 python 2.7。在 /usr/local/lib/python2.7/dist-packages/pip
中查找与已安装包相对应的 pip
可执行文件。
这不是“正确”的方式,但它会起作用
python -m pip install numpy==x.y.z
python
将仅对应于您正在使用的 python 解释器-m pip
将找到与您安装的 python 2.7 相对应的正确 pipnumpy==x.y.z
将强制降级
现在,您可能会遇到权限问题,从而诱使您使用 sudo
。此时,您可以尝试添加 --user
标志...但如果您确实必须使用 sudo,那么请考虑创建一个 virtualenv。 (请。)
可能是正确的做法
其他人对此发表了评论:也许你的索引实际上不是整数。
(相关:Slice indices must be integers or None or have __index__ method)
查找代码中索引到列表的位置,并确保它们实际上是整数。
assert isinstance(a, int), 'a must be an int'
assert isinstance(b, int), 'b must be an int'
x = y[a:b]
继续添加这些类型断言,直到找到错误。
关于python - 如何降级numpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51912284/