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.
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.
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
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 <module>
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 <command> [options]