2015-05-29 4 views
9

когда я pip3 list в терминале, он приходит следующее сообщение об ошибке:список PIP3 приходит AssertionError

[email protected]:~$ 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 

Каждый знает, как это исправить?

+0

Nice. Возможно, вам будет интересно взглянуть на этот https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1445947 –

+0

извините, я не знаю, как изменить этот код – fluency03

+0

где есть ' pip/__ init __. py'? – fluency03

ответ

4

Судя по ошибке, связанной с комментариями, это может быть исправлено путем обновления до последнего Пипа. Поскольку делать это в системе упаковки Ubuntu/Debian является умеренно нетривиальной, я думаю, что было бы проще просто установить новую версию Pip в Virtualenv. После того как вы создали virtualenv, вы можете обновить его до последней Пип с помощью этой команды:

pip install --upgrade pip 
+1

'pip3 install --upprade pip3' для меня не работает – fluency03

+0

Множество вещей приходят на ум: 1. «Не работает» ничего не значит. Какое сообщение об ошибке вы получили? 2. Если вы находитесь в virtualenv (вы есть, правда?), Его просто называют «pip», нет необходимости в 3. 3. Даже если вы не в виртуальном пространстве, pip называет себя «pip», поэтому это будет 'pip3 install --upprade pip'. Но за пределами virtualenv это не будет работать без sudo и, вероятно, смущает APT, поэтому я не рекомендую его. – Kevin

0

Странно, у меня была такая же проблема, но первое решение не работает для меня (я получал такую ​​же ошибку после повторной очистки и снова). Поэтому я решил отредактировать эту строку.

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

И удалены:

== '==' 

Забавно, но он работает сейчас.

+0

Почему голос? Тогда он отлично работал для меня. Это просто нечестно. Поскольку мой ответ был первым, кто касался этого вопроса. Посмотрите дату ответа. –

0

Я исправил эту проблему, закомментировав проблемное assert заявления:

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

Это, безусловно, не является идеальным решением, так как это утверждение, вероятно, там по уважительной причине, но pip3 list теперь работает, как и все другие части pip3, которые я использую.

2

Хотя здесь есть принятый ответ, это не сработало для меня. Таким образом, мой ответ может помочь другим, кто сталкивается с той же проблемой. Эта ошибка была исправлена ​​с помощью одной строки.

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"

+0

Большое спасибо. Просто спас мой день. – slayedbylucifer

+0

Это хороший брат –