2015-05-29 3 views
9

quando faccio pip3 list nel terminale, si tratta il seguente errore:lista PIP3 viene 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 

Qualcuno sa come risolvere questo problema?

+0

Nizza. Potresti essere interessato a dare un'occhiata a questo https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1445947 –

+0

scusa, non so come modificare questo codice – fluency03

+0

dove è ' pip/__ init __. py'? – fluency03

risposta

4

A giudicare dal bug collegato nei commenti, questo può essere risolto aggiornando all'ultima Pip. Dal momento che farlo all'interno del sistema di packaging di Ubuntu/Debian è moderatamente non banale, penso che sarebbe probabilmente più semplice installare una nuova versione di Pip in un Virtualenv. Una volta creato il virtualenv, è possibile aggiornare all'ultima Pip con questo comando:

pip install --upgrade pip 
+1

'pip3 install --upgrade pip3' non funziona per me – fluency03

+0

Vengono in mente più cose: 1. "Non funziona" non significa niente. Che messaggio di errore hai ricevuto? 2. Se sei in una virtualenv (sei, giusto?), Si chiama semplicemente "pip", non serve il 3. 3. Anche se non sei in una virtualenv, pip si chiama "pip", quindi sarebbe 'pip3 install --upgrade pip'. Ma al di fuori di un virtualenv, questo non funzionerà senza sudo e probabilmente confonderebbe APT, quindi non lo consiglio. – Kevin

0

Strano, ho avuto lo stesso problema, ma la prima soluzione non ha funzionato per me (mi è stato sempre il stesso errore dopo averlo ripulito ancora e ancora). Quindi ho deciso di modificare la linea.

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

e rimosso:

== '==' 

divertente, ma funziona ora.

+0

Perché il voto negativo? Ha funzionato perfettamente per me allora. Questo non è giusto. Poiché la mia risposta è stata la prima a toccare la questione. Guarda la data della risposta. –

0

ho risolto questo problema commentando la problematica assert dichiarazione:

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

Questo non è sicuramente una soluzione ideale, in quanto questa affermazione è probabilmente lì per una buona ragione, ma pip3 list ora funziona, come fanno tutti le altre parti di pip3 che uso.

2

Anche se qui c'è una risposta accettata, non ha funzionato per me. Quindi, la mia risposta potrebbe aiutare gli altri che affrontano lo stesso problema. Questo bug è stato corretto con un commit a riga singola qui.

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

La soluzione è quello di cambiare la linea da

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

a

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

Il numero di riga varia da versione a versione, ma, il messaggio di debug dovrebbe rendere più facile trova. Nel tuo caso è line 299, nel file "/usr/lib/python3/dist-packages/pip/__init__.py"

+0

Mille grazie. Ho appena salvato la mia giornata. – slayedbylucifer

+0

Questo è bravo fratello –