Fehler nach Upgrade von pip: kann den Namen 'main&#39 nicht importieren;

Immer wenn ich versuche, ein Paket mit pip zu installieren, erhalte ich diesen Importfehler:

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'


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())

Es hat vorher gut funktioniert, ich bin mir nicht sicher, warum es diesen Fehler auslöst. Ich habe über diesen Fehler recherchiert, kann aber nichts finden, um ihn zu beheben.

Bitte lassen Sie mich wissen, wenn Sie weitere Details benötigen, ich werde meine Frage aktualisieren.

Lösung

Sie müssen versehentlich Ihr System pip aktualisiert haben (wahrscheinlich durch etwas wie sudo pip install pip --upgrade)

pip 10.x passt an, wo sich seine Interna befinden. Der pip3-Befehl, den Sie sehen, wird von Ihrem Paketbetreuer zur Verfügung gestellt (vermutlich basiert er auf Debian?) und ist keine von pip verwaltete Datei.

Sie können mehr darüber auf pip's issue tracker lesen.

Wahrscheinlich sollten Sie Ihr System pip nicht aktualisieren und stattdessen eine virtualenv verwenden.

Um das pip3 Binary wiederherzustellen, müssen Sie sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Wenn Sie sich weiterhin in "nicht unterstütztes Territorium" begeben wollen (Aktualisierung eines Systempakets außerhalb des System-Paketmanagers), können Sie wahrscheinlich mit python3 -m pip ... anstelle von pip3 auskommen.

Kommentare (17)

Prüfen Sie, ob pip auf einem anderen Pfad zwischengespeichert wurde. Rufen Sie dazu $ which pip auf und prüfen Sie, ob sich der Pfad von dem in der Fehlermeldung angegebenen unterscheidet, falls dies der Fall ist, führen Sie aus:

$ hash -r

Wenn der Cache geleert ist, wird pip wieder funktionieren. Referenz: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory

Kommentare (0)

Ich benutze sudo apt remove python3-pip dann funktioniert pip.

 ~ 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]
Kommentare (1)