Numpy: pip install sur python 2.7 en essayant d'installer numpy 1.17, contrairement à NEP 14

Créé le 16 août 2019  ·  15Commentaires  ·  Source: numpy/numpy

pip install numpy sur python 2.7 tente d'installer numpy 1.17, qui a abandonné la prise en charge de python 2.7. Ceci est contraire à la fonctionnalité décrite dans NEP 14 , qui stipule :

... pip install numpy sur Python 2 continuera à donner la dernière version de travail à perpétuité...

Informations sur la version Numpy/Python :

version pip : 19.2.2
python : 2.7.15 |Anaconda, Inc.| (par défaut, 23 octobre 2018, 18:31:10) n[GCC 7.3.0]

32 - Installation

Commentaire le plus utile

la vraie question est de savoir pourquoi vous utilisez python 2.7

il y a beaucoup de raisons valables de continuer à utiliser la 2.7, s'il vous plaît ne commencez pas ce débat ici.

Tous les 15 commentaires

Il semble y avoir un bogue dans pip ou setuptools qui cause cela, pouvez-vous essayer de mettre à niveau pip ? (voir aussi gh-13911 dont je pense qu'il s'agit d'un doublon). Vous pouvez probablement mettre à jour pip avec pip lui-même : python -m pip install --upgrade pip et python -m pip install --upgrade setuptools ?

la vraie question est de savoir pourquoi vous utilisez python 2.7

la vraie question est de savoir pourquoi vous utilisez python 2.7

il y a beaucoup de raisons valables de continuer à utiliser la 2.7, s'il vous plaît ne commencez pas ce débat ici.

Il semble y avoir un bogue dans pip ou setuptools qui cause cela, pouvez-vous essayer de mettre à niveau pip ? (voir aussi gh-13911 dont je pense qu'il s'agit d'un doublon). Vous pouvez probablement mettre à jour pip avec pip lui-même : python -m pip install --upgrade pip et python -m pip install --upgrade setuptools ?

J'exécute les dernières versions des deux - pip 19.2.2 et setuptools 41.1.0.

la vraie question est de savoir pourquoi vous utilisez python 2.7

il y a beaucoup de raisons valables de continuer à utiliser la 2.7, s'il vous plaît ne commencez pas ce débat ici.

En effet il y en a. Dans mon cas, j'essaie d'exécuter un logiciel d'analyse scientifique développé par des universitaires qui n'a pas été porté sur py3.

Mais le point ici n'est pas de savoir si je devrais ou non utiliser python 2.7, c'est que numpy a fait une déclaration formelle de la fonctionnalité attendue, et ce n'est pas la vraie fonctionnalité. C'est, dans mon esprit, le bug.

J'ai remarqué hier que pip n'installerait pas pytest 5.0.1 pour Python 2.7 car 2.7 n'était pas pris en charge, donc pip fonctionne correctement dans certains cas. Je me demande s'il y a des informations quelque part qui doivent être mises à jour pour la 1.17 ?

Vous pouvez essayer python2.7 -mpip pour vous assurer que pip sait quelle version est en cours d'exécution. Il semble également que vous utilisiez Anaconda, ce qui peut être une complication lorsqu'il est mélangé avec du pip.

Que montre which pip ?

Hmmm, sur ma machine, pip 18.1 et setuptools 41.0.1 fonctionnent correctement (à la fois en mode binaire et sans mode binaire). La mise à niveau vers 19.2.2 et 41.1.0 ne change rien pour moi. La version python est 2.7.16+ (debian).

Comme le note Chuck, je suppose que vous vous assurez d'utiliser python2.7 -mpip au lieu de pip pour être certain que vous obtenez la dernière version installée (au cas où vous utilisez --user ou avez un autre version pip pour une raison quelconque.) ?

Ce serait vraiment bien de comprendre ce qui cause exactement cela.

@IPetrik seriez-vous capable de mettre en place un exemple complètement reproductible ? Vous utilisez Anaconda, donc quelque chose comme :

conda create -n py27-empty
conda activate py27-empty
conda install pip
# Some diagnostics
which pip
pip --version
conda list setuptools

pip install numpy

J'ai essayé plusieurs variantes de cela, mais je ne peux pas reproduire votre problème.

Après avoir essayé de préparer un exemple minimal, j'ai compris le problème : nous utilisons un serveur de cache devpi PyPI local qui se trouvait dans mon pip.conf tant que extra-index-url . Si je supprime cela de mon pip.conf , tout fonctionne correctement... oups.

Hmm, il semble que pip devrait gérer ça. Y a-t-il quelque chose de spécial à propos du cache et de pip.conf ? Je ne connais pas ces choses. @njsmith Des idées ?

Je me demande si le serveur devpi ne transmet pas correctement les méta-informations sur les versions disponibles pour un package donné.

Trouvé une raison pour laquelle un nouveau pip peut tenter d'installer 1.17.0 pour Python 2.7. Cela se produit lorsqu'un package utilise setup_requires='numpy' . En effet, cela invoquera easy_install moins que ce package n'ait un pyproject.toml (voir https://github.com/pypa/pip/issues/6945#issuecomment-526479930).

Il existe une solution de contournement : faites explicitement pip install numpy avant pip install package-with-setup-requires .

Et le correctif est le suivant : ce package doit ajouter un pyproject.toml , ce qui fera disparaître ce problème pour une nouvelle version de ce package.

Trouvé une raison pour laquelle un nouveau pip peut tenter d'installer 1.17.0 pour Python 2.7. Cela se produit lorsqu'un package utilise setup_requires='numpy' . C'est parce que cela invoquera easy_install moins que ce package n'ait un pyproject.toml (voir pypa/pip#6945 (commentaire) ).

Il existe une solution de contournement : faites explicitement pip install numpy avant pip install package-with-setup-requires .

Un cas concret de pip install pycuda , qui échoue comme suit :

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-LYaxup/pycuda/setup.py", line 251, in <module>
    main()
  ...
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-mp9NYd/numpy-1.19.0rc1/setup.py", line 182
    raise ValueError(f'Submodule {p} missing')
                                            ^
SyntaxError: invalid syntax

La solution de contournement est simple, comme l' a noté pip install numpy==1.16.6 (pour la dernière version NumPy compatible Python 2.7), puis réessayez pip install pycuda .

C'est un bogue pip , et un bogue très sérieux en apparence. Je peux reproduire cela avec pip 20.1.1. pip-2.7 install numpy installe correctement 1.16.6 , donc les métadonnées pour numpy sur PyPI sont correctes. pip-2.7 install pycuda essaie d'installer le dernier numpy au lieu de 1.16.6 .

C'est probablement déjà signalé, je n'ai pas le temps de m'y pencher dans les prochains jours. @artob si vous regardez s'il y a un problème Pip pour cela et ouvrez-en un sinon, ce serait très apprécié.

Cette page vous a été utile?
0 / 5 - 0 notes