web-dev-qa-db-fra.com

Erreur "InvalidRequirement: exigence non valide, erreur d'analyse" après la mise à jour d'un package python

Après la mise à jour d'un package (IPython dans mon cas) en utilisant pip install -U ipython l'exécution de tout Python qui utilise des points d'entrée échoue avec cette erreur:

Traceback (most recent call last):
  File "/home/adrian/dev/indico/env/bin/indico", line 5, in <module>
    from pkg_resources import load_entry_point
  ...
  File "/home/adrian/dev/indico/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 94, in __init__
    requirement_string[e.loc:e.loc + 8], requirement_string))
pkg_resources._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'< 2.0'"

Rien d'autre n'a changé, je n'ai mis à jour aucune autre bibliothèque.

21
ThiefMaster

Cela est dû à un problème dans setuptools==20.2.1 qui est tiré par IPython (setuptools>..), donc un pip install -U l'a mis à jour.

Jusqu'à ce qu'une version fixe soit publiée ou que la version cassée soit extraite de PyPI, il existe une solution simple (mais notez qu'elle se cassera à nouveau si quelque chose met à jour setuptools):

  • pip install -U pip
  • pip uninstall setuptools
  • pip install 'setuptools<20.2'

La mise à jour pip est nécessaire car les anciennes versions de pip ne fonctionneront pas sans l'installation de setuptools


Voir ces IRC et problème BitBucket pour plus de détails:

23
ThiefMaster

Essayez de rétrograder votre pip vers 8.1.1:

pip install pip==8.1.1

Cela m'a résolu.

11
juanpaolo