为什么在运行pip freeze时,PIP会引发一个AssertionError错误?

39

我的控制台:

desarrollador@desarrollador-HP-14-Notebook-PC1:~$ pip freeze  
Exception:  
Traceback (most recent call last):  
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 126, in main  
    self.run(options, args)  
  File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 68, in run  
   req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)  
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 156, in from_dist  
    assert len(specs) == 1 and specs[0][0] == '=='  
AssertionError

我安装了tornado包,自那以后出现了这个问题。我该如何解决?


你提供的信息太少了。你使用的pip版本是什么?你是否查看了在这里与相同或类似错误消息的各个线程?它可能与“distribute”有关。你是否还安装了“distribute”的某个版本? - cel
1
在SO中没有这样的线程。我正在使用最新版本。 - Luis Masuelli
我也遇到了这个问题。我使用的是pip版本1.5.4。pip install正常工作。 - Luke Yeager
使用 sudo easy_install -U pip 命令可以解决这个问题。 - Pavan Gupta
7个回答

37

对我很有用(在Ubuntu上运行,包括12和14 LTS):

pip install -U setuptools
pip install -U pip

升级到最新的setuptools版本,以便能够升级到最新的pip版本,然后升级到最新的pip版本,以获得修复AssertException错误的版本。


1
有时候,如果root已经安装了pip,你需要添加sudo - gokul_uf

18

原因:Ubuntu 12.04中的python-pip软件包已经严重过时,并且在某些软件包名称上存在一些错误(据我所见),无法正确解析它们。

解决方法:通过easy_install安装更新版本的pip。


1
我刚刚意识到我的 $PATH 上有几个版本的 pip!路径上的第一个 pip 是旧版本。使用 pip -V 运行每个 pip,以检查哪个是最新的(今天:7.1.2),并删除旧版本。 - Berry Tsakala
最终我删除/移除/清除了所有的pip,然后安装了最新版本。我想这是因为有5种不同的安装pip的方式,每一种方式都有些微不同。 - Berry Tsakala

15

你的pip可能已经过时。 即使在Ubuntu 14.04 LTS中,使用apt-get install python-pip安装的pip版本为1.5.4。 尝试手动更新pip,并可能再次更新新软件包。

pip --version # 1.5.4
curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
pip --version # 6.0.8
hash -r # reset bash cache

https://pip.pypa.io/en/latest/installing.html


8
我在这个链接上找到了解决方案。 pip install setuptools==7.0

1
尝试运行 pip list。如果你的问题与我的类似,pip 将在列出大多数软件包之前,在创建问题的软件包上抛出错误。然后查看 /usr/local/lib/python2.7/dist-packages/(或者您安装软件包的任何其他位置),看看是否可以弄清下一个按字母顺序排列的软件包是什么。也许这会为您提供解决问题所需的信息? - Luke Yeager
我成功地升级了pip! :D 我之前使用的是pip 1.0(这是随Ubuntu 12.04一起提供的版本)。 - Luis Masuelli
这对我暂时起作用了,但是安装其他软件包时,我会安装更新设置工具,因此降级似乎不是我的选择。 - ThorSummoner

3

首先,我运行了Martin Mohan的解决方案:

/usr/local/bin/pip uninstall pip
apt-get remove python-pip
apt-get install python-pip

然后boredcoding最终解决了问题,两种解决方案都在帖子底部找到:我在Ubuntu 12.10上搞砸了Python Pip系统版本

$apt-get install python-pip
$which pip
/usr/bin/pip

$pip install -U pip
$which pip
/usr/bin/pip

$hash -r
$which pip
/usr/local/bin/pip

这两个修复方案的逻辑已在上面链接的帖子中说明,所以我不会在这里详细解释。

3

问题是由于安装了旧版本的pip。运行以下命令以安装新版本的pip

sudo easy_install -U pip. 

2
可能有点晚了,但我发现一个问题是,已安装了2或3个版本的pip(取决于您安装了什么) pip - 安装在操作系统上的版本,无法使用freeze命令,并且可能已经过时 pip2 - 较新的版本,如果通过pip更新,则可以使用 pip3 - 如果同时安装了python3和python2,则会安装此版本。
您可以更改$PATH中使用的pip,也可以像我一样执行: pip2 freeze (如果您在ubuntu14上有多个python选项,则可行)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接