2015-05-29 7 views
9

wenn ich pip3 list im Terminal zu tun, es kommt folgender Fehler:PIP3 Liste kommt 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 

Jeder weiß, wie dieses Problem beheben?

+0

Nizza. Sie könnten interessiert sein, einen Blick auf diese https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1445947 –

+0

Sorry, ich weiß nicht, wie Sie diesen Code zu ändern – fluency03

+0

wo ist ' pip/__ init __. py'? – fluency03

Antwort

4

Nach dem Fehler in den Kommentaren beurteilt, kann dies durch ein Upgrade auf die neueste Pip behoben werden. Da dies innerhalb von Ubuntu/Debians Verpackungssystem moderat nicht-trivial ist, denke ich, dass es wahrscheinlich einfacher wäre, einfach eine neue Version von Pip in eine Virtualenv zu installieren. Sobald Sie die virtualenv erstellt haben, können Sie auf aktuelle Pip mit diesem Befehl aktualisieren:

pip install --upgrade pip 
+1

'pip3 install --upgrade pip3' funktioniert bei mir nicht – fluency03

+0

Mehrere Dinge kommen in den Sinn: 1. "Nicht funktioniert" bedeutet nichts. Welche Fehlermeldung haben Sie erhalten? 2. Wenn du in einem virtualenv bist (du bist, oder?), Heißt es einfach "pip", keine Notwendigkeit für die 3. 3. Auch wenn du nicht in einem virtualenv bist, nennt sich pip selbst "pip", also es wäre 'pip3 install --upgrade pip'. Aber außerhalb eines virtualenv, das wird ohne sudo nicht funktionieren und würde APT wahrscheinlich verwechseln, also empfehle ich es nicht. – Kevin

0

Seltsam, habe ich das gleiche Problem hatte, aber die erste Lösung nicht für mich arbeiten (ich war immer die derselbe Fehler, nachdem er erneut und wieder gelöscht wurde). Also habe ich beschlossen, die Linie zu bearbeiten.

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

und entfernt:

== '==' 

Lustig, aber es funktioniert jetzt.

+0

Warum die down vote? Es funktionierte perfekt für mich damals. Das ist einfach nicht fair. Seit meiner Antwort war die erste die Sache zu berühren. Sehen Sie sich das beantwortete Datum an. –

0

fixiert ich dieses Problem durch die problematische assert Aussage kommentieren heraus:

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

Dies ist definitiv keine ideale Lösung, da diese Aussage für einen guten Grund wahrscheinlich es ist, aber pip3 list funktioniert nun, wie alle tun die anderen Teile von pip3, die ich benutze.

2

Obwohl es hier eine akzeptierte Antwort gibt, hat das für mich nicht funktioniert. Also, meine Antwort könnte anderen helfen, die dasselbe Problem haben. Dieser Fehler wurde hier mit einem einzeiligen Commit behoben.

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

Die Lösung ist die Linie von

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

zu

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

Die Zeilennummer ändert sich von Version zu Version zu ändern, aber sollte die Debug-Meldung es leichter zu finden. In Ihrem Fall ist es line 299, in der Datei "/usr/lib/python3/dist-packages/pip/__init__.py"

+0

Vielen Dank. Habe gerade meinen Tag gerettet. – slayedbylucifer

+0

Das ist ein guter Bruder –

Verwandte Themen