Errore dopo l'aggiornamento di pip: impossibile importare il nome 'main'

Ogni volta che cerco di installare qualsiasi pacchetto usando pip, ottengo questo errore di importazione:

guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

br>

guru@guru-notebook:~$ cat `which pip3`
#!/usr/bin/python3
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

Prima funzionava bene, non sono sicuro del perché stia lanciando questo errore. Ho cercato questo errore, ma non riesco a trovare nulla per risolverlo.

Per favore fatemi sapere se avete bisogno di ulteriori dettagli, aggiornerò la mia domanda.

Soluzione

Devi aver inavvertitamente aggiornato il tuo sistema pip (probabilmente attraverso qualcosa come sudo pip install pip --upgrade)

pip 10.x regola dove si trovano i suoi interni. Il comando pip3 che stai vedendo è un comando fornito dal tuo manutentore di pacchetti (presumibilmente basato su debian qui?) e non è un file gestito da pip.

Puoi leggere di più su questo su pip'issue tracker

Probabilmente vorrete non aggiornare il vostro sistema pip e usare invece un virtualenv.

Per recuperare il binario pip3 avrete bisogno di sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Se vuoi continuare in "territorio non supportato" (aggiornando un pacchetto di sistema al di fuori del gestore dei pacchetti di sistema), puoi probabilmente cavartela con python3 -m pip ... invece di pip3.

Commentari (17)

Controllare se pip è stato memorizzato nella cache su un altro percorso, per farlo, chiamare $ che pip e controllare che il percorso sia diverso da quello richiesto nell'errore, se è così eseguire:

$ hash -r

Quando la cache sarà cancellata, pip tornerà a funzionare. riferimento: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory

Commentari (0)

Uso sudo apt remove python3-pip poi pip funziona.

 ~ sudo pip install pip --upgrade
[sudo] password for sen: 
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in 
    from pip import main
ImportError: cannot import name 'main'
➜  ~ sudo apt remove python3-pip   
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
  python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
➜  ~ pip

Usage:   
  pip  [options]
Commentari (1)