"InvalidRequirement: Invalid requirement, parse error" 更新 python 包后出错

"InvalidRequirement: Invalid requirement, parse error" error after updating a python package

在使用 pip install -U ipython 运行 任何使用入口点的 Python 脚本更新包(在我的例子中是 IPython 之后)失败并出现此错误:

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

没有其他变化,我没有更新任何其他库。

这是由 setuptools==20.2.1 中的一个问题引起的,该问题由 IPython (setuptools>..) 引入,因此 pip install -U 对其进行了更新。

在发布固定版本或从 PyPI 中提取损坏的版本之前,有一个简单的解决方法(但请注意,如果某些内容更新了 setuptools,它将再次损坏):

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

需要 pip 更新,因为如果不安装 setuptools,旧版本的 pip 将无法工作


有关详细信息,请参阅这些 IRC 日志和 BitBucket 问题:

尝试将你的 pip 降级到 8.1.1:

pip install pip==8.1.1

这帮我解决了。