30

After updating a package (IPython in my case) using pip install -U ipython running any Python script that uses entry points fails with this error:

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'"

Nothing else changed, I did not update any other libraries.

ThiefMaster
  • 310,957
  • 84
  • 592
  • 636

3 Answers3

33

This is caused by an issue in setuptools==20.2.1 which is pulled in by IPython (setuptools>..), so a pip install -U updated it.

Until a fixed version is released or the broken version is pulled from PyPI there is a simple workaround (but note that it will break again if something updates setuptools):

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

The pip update is needed since older versions of pip will not work without setuptools being installed


See these IRC logs and BitBucket issue for details:

ThiefMaster
  • 310,957
  • 84
  • 592
  • 636
13

Try downgrading your pip to 8.1.1:

pip install pip==8.1.1

That solved it for me.

juanpaolo
  • 625
  • 5
  • 14
0

In my case I had package = "2.8.0" in my Pipfile. Changing it to package = "==2.8.0" fixed this error for me.

Matthias
  • 3,160
  • 2
  • 24
  • 38