web-dev-qa-db-fra.com

Comment rétrograder numpy?

J'ai une erreur

TypeError: slice indices must be integers or None or have an __index__ 
method

et j'ai cherché une solution et j'ai obtenu que je devrais rétrograder la version de numpy, puis j'ai essayé d'utiliser cette commande

python
import numpy 
numpy.__version__

et j'ai

>>> numpy.__version__
'1.14.5'

mais quand j'ai utilisé

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: 

maintenant quelle est la version utilisée python?

Commandes

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

et

$ python -m pip --version
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
7
user8163730

Vous êtes probablement confus entre python2, python3 et différents python environnements virtuels .

C'est la source la plus fiable, dans votre cas

$ python
>>> import numpy
>>> numpy.__version__
'1.14.5'

Pour mettre à niveau/rétrograder numpy, vous devez utiliser pip qui correspond au python que vous utilisez. Je pense que vous utilisez python 2.7. Recherchez un exécutable pip qui correspond au package installé sur /usr/local/lib/python2.7/dist-packages/pip.

Ce n'est pas la "bonne" façon, mais ça marchera

python -m pip install numpy==x.y.z
  • python correspondra juste à python interprète que vous utilisez
  • -m pip trouvera le bon pip qui correspond à votre installation de python 2.7
  • numpy==x.y.z forcera la rétrogradation

Maintenant, vous rencontrerez probablement des problèmes d'autorisations qui vous tenteront d'utiliser Sudo. À ce stade, vous pouvez soit essayer d'ajouter le --user flag ... mais si vous devez vraiment utiliser Sudo, pensez à créer un virtualenv. (S'il vous plaît.)

Probablement la bonne chose à faire

D'autres ont commenté ceci: peut-être que vos indices ne sont en fait pas des entiers.

(Connexes: Les indices de tranche doivent être des entiers ou Aucun ou avoir la méthode __index__ )

Recherchez les emplacements de votre code qui sont indexés dans une liste et assurez-vous qu'il s'agit bien d'entiers.

assert isinstance(a, int), 'a must be an int'
assert isinstance(b, int), 'b must be an int'
x = y[a:b]

Continuez à ajouter ces assertions de type jusqu'à ce que vous trouviez le bogue.

9
James Lim

Je doute que vous do ayez vraiment besoin, ou voulez, de rétrograder NumPy.

Mais ce n'est pas vraiment votre question. Vous voulez savoir pourquoi pip montre une chose et python en montre une autre, et ce que vous pouvez faire à ce sujet.


La raison pour laquelle vous voyez des choses différentes est que votre pip ne va pas avec votre python.

Lorsque vous exécutez python, c'est votre Python 2.7, et les packages que vous import y proviennent de votre bibliothèque 2.7, à /usr/local/lib/python2.7/.

Lorsque vous exécutez pip, il utilise votre Python 3.4, et installe et recherche des éléments dans votre bibliothèque Python 3.4, qui se trouve à /usr/local/lib/python3.4/.

Alors, pip show numpy vous montre la version de NumPy que votre Python 3.4 a, qui est complètement indépendante de la version de NumPy votre Python 2.7 l'a).

Si vous n'aviez pas l'intention d'utiliser Python 2.7, la solution consiste à exécuter Python 3.4 à la place, généralement en utilisant simplement python3 au lieu de python.

Si vous avez l'intention d'utiliser Python 2.7, la solution consiste à utiliser le pip qui l'accompagne. Vous pouvez avoir une commande nommée pip2 ou pip2.7 pour cela, mais le moyen le plus sûr est d'utiliser python -m pip au lieu de pip.


En remarque, étant donné où votre 3.4 NumPy est installé, il semble que vous ayez fait quelque chose comme apt-get python3-numpy ou yum python-numpy ou similaire pour l'installer, pas pip install numpy. Et probablement quelque chose comme apt-get python2-numpy pour obtenir également la version 2.7. Si c'est le cas, vous voudrez peut-être le rétrograder ou le mettre à niveau de la même manière que vous l'avez installé en premier lieu, en utilisant le gestionnaire de packages de votre distribution, au lieu d'utiliser pip. Sinon… alors ignorez ce paragraphe.


Si tout cela semble trop compliqué, mais que vous avez vraiment besoin d'avoir les deux Python 2.7 et Python 3.4 autour, il y a deux choses que vous devez considérer:

  • Utilisez toujours des environnements virtuels. Dans la mesure du possible, n'installez rien du monde; choisissez un environnement dans lequel l'installer. Quel que soit l'environnement actif, python et pip seront tous les deux pour cet environnement.
  • Installez la dernière version d'Anaconda, avec la dernière version de Python (3.7 à partir d'aujourd'hui), puis demandez-lui d'installer les environnements conda 3.4 et 2.7. Utilisez ces environnements et ne touchez même jamais votre système 3.4 et 2.7.
3
abarnert

Vous pouvez rétrograder à l'aide de l'indicateur --upgrade, cela fonctionne dans les deux sens, par exemple

pip install --upgrade numpy==1.10.1
2
johnny 5