我出错了
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: [email protected]
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)
4条答案
按热度按时间new9mtju1#
你可能会在python 2、python3和不同的pythonx 1 e0f1x之间感到困惑。
这是最可靠的消息来源,在你的情况下
要升级/降级numpy,您需要使用与您正在使用的
python
对应的pip
。我想你用的是Python 2.7。查找与/usr/local/lib/python2.7/dist-packages/pip
上安装的软件包对应的pip
可执行文件。这不是“正确”的方法,但它会工作
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,直到找到bug。
ulmd4ohb2#
您可以使用--upgrade标志进行降级,它可以双向工作,例如
56lgkhnf3#
我怀疑你真的需要,或者想要,降级NumPy。
但这不是你真正想问的问题。你想知道为什么
pip
显示一个东西,而python
显示另一个东西,以及你可以做些什么。你看到不同的东西的原因是你的
pip
和你的python
不匹配。当你运行
python
时,那是你的Python 2.7,你的import
包来自你的2.7库,在/usr/local/lib/python2.7/
。当你运行
pip
时,它使用的是Python 3.4,并在Python 3.4的库中安装和查找东西,该库位于/usr/local/lib/python3.4/
。因此,
pip show numpy
向您显示Python 3.4的NumPy版本,它完全独立于Python 2.7的NumPy版本。如果您不打算使用Python 2.7,解决方案是运行Python 3.4,通常只需使用
python3
而不是python
。如果你确实打算使用Python 2.7,解决方案是使用它附带的
pip
。您可能有一个名为pip2
或pip2.7
的命令,但最安全的方法是使用python -m pip
而不是pip
。作为一个侧面说明,考虑到你的3.4 NumPy安装的位置,看起来你可能已经做了像
apt-get python3-numpy
或yum python-numpy
或类似的事情来安装它,而不是pip install numpy
。可能还有像apt-get python2-numpy
这样的东西来获得2.7版本。如果是这样的话,您可能希望使用您最初安装它的方式降级或升级它,使用您的发行版的包管理器,而不是使用pip
。如果没有,那就忽略这一段。如果这一切看起来太复杂了,但你确实需要同时使用Python 2.7和Python 3.4,那么你应该考虑两件事:
python
和pip
都将用于该环境。fcipmucu4#
对于那些想要更换(升级或降级)他们的NumPy版本的人,只需:
其中
x.x.x
属于您所需的NumPy版本,-U
将强制升级并删除已安装的软件包。事实上,这实际上可能适用于任何pip软件包。