pip3 列表出现 AssertionError

pip3 list comes AssertionError

当我在终端中执行 pip3 list 时,出现以下错误:

cliu@cliu-ubuntu:~$ pip3 list
Exception:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/commands/list.py", line 80, in run
    self.run_listing(options)
  File "/usr/lib/python3/dist-packages/pip/commands/list.py", line 142, in run_listing
    self.output_package_listing(installed_packages)
  File "/usr/lib/python3/dist-packages/pip/commands/list.py", line 151, in output_package_listing
    if dist_is_editable(dist):
  File "/usr/lib/python3/dist-packages/pip/util.py", line 367, in dist_is_editable
    req = FrozenRequirement.from_dist(dist, [])
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 299, in from_dist
    assert len(specs) == 1 and specs[0][0] == '=='
AssertionError

Storing debug log for failure in /home/cliu/.pip/pip.log 

有人知道如何解决这个问题吗?

根据评论中链接的错误判断,这可以通过升级到最新的 Pip 来解决。由于在 Ubuntu/Debian 的打包系统中这样做并不简单,我认为将新版本的 Pip 安装到 Virtualenv 中可能会更简单。创建 virtualenv 后,您可以使用此命令升级到最新的 Pip:

pip install --upgrade pip

奇怪,我遇到了同样的问题,但第一个解决方案对我不起作用(我一遍又一遍地清除它后出现同样的错误)。所以我决定编辑该行。

assert len(specs) == 1 and specs[0][0] == '=='

并删除:

 == '=='

有趣,但现在可以了。

我通过注释掉有问题的 assert 语句解决了这个问题:

# assert len(specs) == 1 and specs[0][0] == '=='

这绝对不是一个理想的解决方案,因为该声明可能是有充分理由的,但 pip3 list 现在可以工作了,我使用的 pip3 的所有其他部分也是如此。

虽然这里有一个可接受的答案,但对我不起作用。所以,我的回答可能会帮助其他面临同样问题的人。 此错误已通过此处的单行提交修复。

https://github.com/pypa/pip/commit/6cab71f422f2425b4d2283023c9e955f9663dde6

解决方案是将行从

assert len(specs) == 1 and specs[0][0] == '=='

assert len(specs) == 1 and specs[0][0] in ["==", "==="]

行号因版本而异,但调试消息应该更容易找到。在您的情况下,它是 line 299,在文件 "/usr/lib/python3/dist-packages/pip/__init__.py"