【问题标题】:pip3 list comes AssertionErrorpip3 list 自带 AssertionError
【发布时间】:2015-08-12 22:36:04
【问题描述】:

当我在终端执行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 

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

【问题讨论】:

标签: python python-2.7 python-3.x pip


【解决方案1】:

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

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"

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      并删除:

       == '=='
      

      有趣,但现在可以了。

      【讨论】:

      • 为什么投反对票?当时它对我来说非常有效。这不公平。因为我的回答是第一个触及这个问题的人。查看已回答的日期。
      【解决方案4】:

      从 cmets 中链接的错误来看,可以通过升级到最新的 Pip 来修复。由于在 Ubuntu/Debian 的打包系统中这样做并不简单,我认为将新版本的 Pip 安装到 Virtualenv 中可能会更简单。创建 virtualenv 后,您可以使用以下命令升级到最新的 Pip:

      pip install --upgrade pip
      

      【讨论】:

      • 我想到了很多事情: 1. “不工作”没有任何意义。你得到什么错误信息? 2.如果你在virtualenv中(你是,对吗?),它只是称为“pip”,不需要3。3.即使你不在virtualenv中,pip也称自己为“pip”,所以应该是pip3 install --upgrade pip。但是在 virtualenv 之外,没有 sudo 就无法工作,并且可能会混淆 APT,所以我不推荐它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      相关资源
      最近更新 更多