Fehler nach dem Upgrade von pip: Name 'main' kann nicht importiert werden


467

Immer wenn ich versuche, ein Paket mit pip zu installieren, wird der folgende Importfehler angezeigt:

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 früher gut funktioniert, ich bin mir nicht sicher, warum es diesen Fehler auslöst. Ich habe nach diesem Fehler gesucht, kann aber nichts finden, um ihn zu beheben.

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


1
Zusätzliche Diskussion unter diesem Link .
Diagon

7
Ich hatte das gleiche Problem, weil ich pip install --upgrade pipPip auf einem Server aktualisiert habe, auf dem ich keine Administratorrechte habe. Das Deinstallieren von pip mit hat python -m pip uninstall pipmein Problem gelöst.
Foad

Die Antworten haben mir nicht geholfen. Dies war mein Problem: github.com/pypa/pipenv/issues/2095
Étienne

Antworten:


846

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

pip 10.x passt an, wo sich seine Einbauten befinden. Der pip3Befehl, den Sie sehen, wird von Ihrem Paketbetreuer bereitgestellt (vermutlich debianbasiert hier?) Und ist keine von pip verwaltete Datei.

Weitere Informationen hierzu finden Sie im Issue Tracker von pip

Möglicherweise möchten Sie Ihr System-Pip nicht aktualisieren und stattdessen eine virtuelle Umgebung verwenden.

Um die pip3Binärdatei wiederherzustellen, müssen Sie sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Wenn Sie in "nicht unterstütztem Gebiet" fortfahren möchten (Aktualisieren eines Systempakets außerhalb des Systempaketmanagers), können Sie wahrscheinlich mit python3 -m pip ...statt davonkommen pip3.


28
sudo apt install python3-pip --reinstallDas Problem wurde nicht behoben, ich kann das Paket jedoch mit installieren python3 -m pip. Danke für Ihre Hilfe. Ich markiere es als akzeptiert.
g_p

2
@g_p aktualisiert die "Fixup" Anweisungen - nur überprüft sie im Docker (ich hätte das das erste Mal tun sollen!)
Anthony Sottile

5
Ich muss den Befehl 'python -m pip uninstall pip' verwenden, da 'sudo pip uninstall pip' einen ähnlichen Fehler wie die ursprüngliche Frage ergab
Mz A

41
Vielen Dank! Das hat geholfen! Verwenden Sie sudo python -m pip uninstall pip && sudo apt install python-pip --reinstallfür Python2!
Barmaley

1
Funktioniert für Ubuntu unter Windows. Die Lösung ist das, was @Barmaley für Python2 (den Standard-Python-Interpreter) vorschlägt.
JDHAO

111

Wir können den Fehler beheben, indem wir die Pip-Datei ändern.

Überprüfen Sie den Speicherort der Datei:

$ which pip

Pfad -> / usr / bin / pip

Gehen Sie zu diesem Ort ( / usr / bin / pip ) und öffnen Sie das Terminal

Eingeben: $ sudo nano pip

Du kannst sehen:

import sys
from pip import main
if __name__ == '__main__':
     sys.exit(main())

Ändern:

import sys
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())

dann Strg + o die Änderungen schreiben und beenden

Hoffe das wird reichen !!


1
Durch diese Änderungen wurde das Problem nicht behoben, aber durch Zurücksetzen auf den ursprünglichen Text. ¯_ (ツ) _ / ¯
David

2
Ich versuchte dies, bekam aberAttributeError: module 'pip.__main__' has no attribute 'main'
dnnagy

4
Stellen Sie sicher, dass Sie _main () not main ()
vijay athithya

2
In der neuesten Version pip3wird das main()nach verschoben pip._internal. Die Importanweisung sollte infrom pip._internal import main
Yossarian42

2
Lief wie am Schnürchen! Vielen Dank
Mahesh Nanayakkara

69

Für Benutzer der Ubuntu-Familie, Debian, Linux Mint

Dank der obigen Erklärung von Anthony können Sie Ihre ursprüngliche System-Pip (in / usr / bin / und dist-packages /) beibehalten und die manuell installierte Pip (in ~ / .local /) entfernen, um den Konflikt zu lösen:

$ python3 -m pip uninstall pip

Ubuntu / Debian pip v8.1.1 (16.04) aus dem Debian- python3-pipPaket (siehe $ pip3 -V) zeigt die gleichen Suchergebnisse wie das neueste pip v10.0.1 und installiert die neuesten Module von PyPI einwandfrei. Es verfügt über einen funktionierenden pipBefehl (bereits im $ PATH enthalten) sowie die --userseit 2016 standardmäßig eingebaute nette Option. In den neueren Versionen geht es hauptsächlich um anwendungsfallspezifische Fehlerkorrekturen und bestimmte neue Funktionen, also nicht Jeder muss sich noch beeilen, Pip aufzurüsten. Und der neue Pip 10 kann sowieso auf Python Virtualenvs bereitgestellt werden.

Unabhängig von Pips ermöglicht Ihr Betriebssystem jedoch die schnelle Installation gängiger Python-Module (einschließlich Numpy) mit APT, ohne dass Pip erforderlich ist, z. B.:
$ sudo apt install python3-numpy python3-scipy(Mit Systemabhängigkeiten)
$ sudo apt install python3-pip(Debian-gepatchter Pip, etwas älter, aber egal)

Schnelle Erinnerung an die passende Syntax (siehe man aptDetails):
$ sudo apt update(zum erneuten Synchronisieren von Ubuntu-Paketindexdateien aus aktuellen Quellen)
$ apt search <python-package-name> (Volltextsuche für alle verfügbaren Pakete)
$ apt show <python-package-name>(zeigt die detaillierte Paketbeschreibung an)
$ sudo apt install <python-package-name>

Paketnamen mit dem Präfix python-sind für Python 2; und mit dem Präfix python3-sind für Python 3 (zB Python3-Pandas). Es gibt Tausende und sie werden Integrationstests in Debian und Ubuntu unterzogen. Sofern Sie nicht versuchen, auf Benutzerebene ( pip install --userOption) oder in virtualenv / venv zu installieren , könnte apt das sein, was Sie benötigen. Auf diese Systempakete kann auch über virtuelle Envs zugegriffen werden, da virtualenv beim Import problemlos auf die Verwendung von Systembibliotheken zurückgreift, wenn Ihre Envs keine Kopien von Modulen angegeben haben. Ihre benutzerdefinierten (mit pip --user) Module pro Benutzer ~/.local/libüberschreiben diese ebenfalls.

Da es sich um eine systemweite Installation handelt, müssen Sie diese selten entfernen (Sie müssen die Betriebssystemabhängigkeiten berücksichtigen). Dies ist praktisch für Pakete mit vielen Systemabhängigkeiten (z. B. mit scipy oder matplotlib), da APT alle erforderlichen Systembibliotheken und C-Erweiterungen verfolgt und bereitstellt, während Sie mit pip keine solchen Garantien haben .

Tatsächlich erwartet Ubuntu für systemweite Python-Pakete (im Gegensatz zu Benutzer-, Home-Dir-Level oder niedriger), dass der APT-Paketmanager verwendet wird (und nicht sudo pip), um einen Betriebssystemausfall zu vermeiden: Er sudo pip3zielt auf dasselbe /usr/lib/python3/dist-packagesVerzeichnis ab, in dem APT das Betriebssystem speichert -empfindliche Module. Neuere Debian / Ubuntu-Versionen hängen stark von Python 3 ab, daher werden die vorinstallierten Module von verwaltet aptund sollten nicht geändert werden.

Wenn Sie den pip3 installBefehl verwenden, stellen Sie bitte sicher, dass er in einer isolierten virtuellen Entwicklungsumgebung ausgeführt wird , z. B. mit virtualenv ( sudo apt install python3-virtualenv) oder mit Python3 ( -m venv)) oder auf Benutzerebene ( --userOption pip, Standardeinstellung in Ubuntu) pip seit 2016), aber nicht systemweit (nie sudo pip3!), da pip den Betrieb des APT-Paketmanagers stört und Ubuntu-Betriebssystemkomponenten beeinträchtigen kann, wenn ein vom System verwendetes Python-Modul unerwartet geändert wird. Viel Glück!


P. S. Alles oben Genannte ist für die "ideale" Lösung (Debian / Ubuntu-Weg).

Wenn Sie noch die neue PIP3 v10 ausschließlich verwenden möchten, gibt es 3 schnelle Lösungen:

  • Öffnen Sie einfach eine neue Bash-Sitzung (eine neue Terminal-Registerkarte oder einen neuen Typ bash) - und pip3 v10 wird verfügbar (siehe pip3 -V). debians pip3 v8 bleibt installiert, ist aber kaputt; oder
  • Der Befehl $ hash -d pip3 && pip3 -V zum Aktualisieren des pip3-Pfadnamens im $ PATH. debians pip3 v8 bleibt installiert, ist aber kaputt; oder
  • der Befehl $ sudo apt remove python3-pip && hash -d pip3, debians pip3 v8 vollständig zu deinstallieren, zugunsten Ihres neuen pip3 v10.

Hinweis: Sie müssen --userjedem nicht von Debian bereitgestellten Pip immer ein Flag hinzufügen , es sei denn, Sie befinden sich in einer virtuellen Umgebung! (Es stellt Python-Pakete ~/.local/für bereit, standardmäßig in den von Debian / Ubuntu bereitgestellten Python3-Pip und Python-Pip seit 2016). Ihre systemweite Verwendung von pip 10 außerhalb von virtualenv wird von Ubuntu / Debian nicht wirklich unterstützt. Niemals sudo pip3!

Weitere Details:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100


Können Sie mir helfen zu verstehen, warum die Installation einer aktualisierten Version von pip lokal mit --user, dh ohne sudo, meine Fähigkeit beeinträchtigt, die installierte Wohnung auszuführen pip? Ich dachte, die beiden würden nebeneinander existieren. Aber wie dieser Kern zeigt, bricht die installierte Wohnung nach mir python3 -m pip install --user --upgrade pip. Ich suche keine Lösung - ich bin nur wirklich neugierig zu verstehen, was hier passiert.
George Hawkins

1
@ George Es passiert aufgrund einer Nichtübereinstimmung zwischen den Pip-Bibliotheken und ihren Wrappern, die sie importieren. Wenn Sie versuchen, den System-Pip-Befehl sofort auszuführen (ohne eine der Lösungen anzuwenden ), wird weiterhin die apt-installierte Systemversion des Pip-Wrapper-Skripts aufgerufen /usr/bin/pip3und nicht die als --user( ~/.local/bin/pip*) installierte Version gemäß dem Betriebssystem $ PATH, das noch zum Ausführen von ausgeführt wird Systemversion des Wrappers, aber nicht seine Bibliotheken ..
Alex C.

2
@George Dies liegt daran, dass jetzt ein neueres Pip-Paket installiert ist, ~/.local/lib/python3.?/site-packages/pipdas bei den relativen Python-Importen Vorrang vor dem System hat (die benutzerlokale Site hat Vorrang vor den globalen Bibliotheken). Und weil der ältere Wrapper from pip import maineher als from pip._internaloder seine __main__Klasse gegen die neuere Version des pip-Pakets versucht, schlägt der Befehl pip aus der Liste mit fehl ImportError: cannot import name 'main'. So können beide Pips nebeneinander existieren (auf der Festplatte), aber die Funktionalität des ursprünglichen Systems wird "kaputt" sein.
Alex C.

+1 für --user. pip install --userhat es für mich getan. (Ich habe Python 2.7, Python 3.6 und Python 3.7, alle unter Ubuntu 18.04 LTS installiert.)
Stephen G Tuggy

46

nur in einem Schritt gelöst.

Auch ich war mit diesem Problem konfrontiert, aber dies kann einfach mit einem Befehl gelöst werden, ohne sich darum zu kümmern und Zeit zu verschwenden. Ich habe es auf mehreren Systemen versucht. Es ist die sauberste Lösung für dieses Problem. Und das ist:

Für Python3: - sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Auf diese Weise können Sie Pakete einfach mit installieren pip3. Verwendung überprüfen pip3 --version.

Verwenden Sie für ältere Versionen : sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall.

Auf diese Weise können Sie jetzt einfach Pakete mit installieren pip. Verwendung überprüfen pip --version.


31

Verwenden Sie python -m pip installanstelle vonpip install

Beispiel:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

Die pip(bzw. pip3) ausführbare Datei wird von Ihrer Distribution ( python-pipPaket unter Ubuntu 16.04) bereitgestellt und befindet sich unter /usr/bin/pip.

Daher wird es beim pipUpgrade von pip nicht mit dem Paket selbst auf dem neuesten Stand gehalten und kann beschädigt werden.

Wenn Sie nur python -m pipdirekt verwenden, zB wie in:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

Es geht Ihren Python-Pfad durch, findet die neueste Version von pip und führt diese Datei aus.

Es beruht auf der Tatsache, dass die Datei über ausführbar ist import, aber dies ist eine sehr standardmäßige Art von Schnittstelle und daher weniger wahrscheinlich zu brechen als das hackigere Debian-Skript.

Dann empfehle ich, die folgenden Aliase zu Ihrem hinzuzufügen .bashrc:

pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )

Die Ubuntu 18.04- /usr/bin/pip3Datei bietet:

from pip import main

und vermutlich mainwurde pipirgendwann entfernt, was die Dinge kaputt machte.

Das unterbrechende Pip-Commit scheint zu sein: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Alle internen APIs nach pip._internal verschieben", das in pip 18.0 eingegeben wurde .

Getestet in Ubuntu 16.04 nach einem Update von pip39.0.1 auf 18.0.

pyenv

Letztendlich würde ich jedoch für eine ernsthafte Python-Entwicklung nur empfehlen, dass Sie Ihr eigenes lokales Python mit pyenv + virtualenv installieren, um diesen Ubuntu-Fehler zu umgehen: /ubuntu/682869/how-do-i- Installieren Sie eine andere Python-Version mit apt-get / 1195153 # 1195153


3
Nach 5 Stunden Suche hat das bei mir funktioniert. Ich kann dir eine Blume liefern, wenn du mir deine Adresse schickst. Vielen Dank.
Cagri

18

Sie können dieses Problem beheben, indem Sie pip neu installieren.

Verwenden Sie einen der folgenden Befehlszeilenbefehle, um pip neu zu installieren:

Python2:

python -m pip uninstall pip && sudo apt install python-pip --reinstall

Python3:

 python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall


8

Ich arbeite auf einem System, auf dem ich sudo apt, aber keinen sudo pip habe. (Und kein su-Zugang.) Ich habe mich in die gleiche Situation gebracht, indem ich den Ratschlägen von pip gefolgt bin:

Sie verwenden Pip Version 8.1.1, jedoch ist 18.0 verfügbar. Sie sollten ein Upgrade über den Befehl 'pip install --upgrade pip' in Betracht ziehen.

Keines der anderen Fixes hat bei mir funktioniert, da ich nicht über genügend Administratorrechte verfüge. Ein paar Dinge sind mir jedoch beim Lesen aufgefallen:

  • Ich hätte das nicht tun sollen. Klar, Pip hat es mir gesagt. Es hat gelogen.
  • Die Verwendung von --user löst viele Probleme, indem Sie sich auf das Nur-Benutzer-Verzeichnis konzentrieren.

Also fand ich, dass diese Befehlszeile funktioniert, um mich wieder dorthin zu bringen, wo ich war. Wenn Sie eine andere Version als 8.1.1 verwendet haben, möchten Sie diesen Teil der Zeile natürlich ändern.

python -m pip install --force-reinstall pip==8.1.1 --user

Das ist das einzige, was für mich funktioniert hat, aber es hat perfekt funktioniert!


7

Wiederherstellen mit python3 -m pip install --user pip==9.0.1(oder der Version, die funktioniert hat)


5

Das gleiche passierte mir auf Pixelbook mit dem neuen LXC (strech). Diese Lösung ist der akzeptierten sehr ähnlich, mit einem subtilen Unterschied, der für mich festes pip3 war.

sudo python3 -m pip install --upgrade pip

Das hat die Version gestoßen, und jetzt funktioniert es wie erwartet.

Ich habe es hier gefunden ... Python.org: Stellen Sie sicher, dass pip auf dem neuesten Stand ist


4

Ich habe das gleiche Problem auf meinem Ubuntu 16.04-System festgestellt. Ich konnte es beheben, indem ich pip mit dem folgenden Befehl neu installierte:

curl https://bootstrap.pypa.io/get-pip.py | sudo python3


Es hat den Vorteil, dass Sie es von der Quelle installieren, und keine der oben genannten funktionierte auf einem sauberen leeren Debian 9 (von meinem dedizierten Server-Provider)
Peter Rosemann

Curling das Internet zu Super User, was könnte schief gehen!
Sum1sAdmin

3

Die obigen Befehle haben bei mir nicht funktioniert, aber sie waren sehr hilfreich:

sudo apt purge python3-pip
sudo rm -rf '/usr/lib/python3/dist-packages/pip'  
sudo apt install python3-pip
cd
cd .local/lib/python3/site-packages
sudo rm -rf pip*  
cd
cd .local/lib/python3.5/site-packages
sudo rm -rf pip*  
sudo pip3 install jupyter

2

In Ubuntu 18.04.1 Bionic Beaver müssen Sie sich abmelden und wieder anmelden (Neustart nicht erforderlich), um die richtige Umgebung zu erhalten.

$ sudo apt install python-pip

$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip install --upgrade pip

$ pip --version
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

$ exit
<login>

$ pip --version
pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)

1

Ich benutze sudo apt remove python3-pip dann pipfunktioniert.

 ~ 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]

1
Es ist, weil pipfür Python 2. OP verwendet pip3, die Python 3-Version von pip, die Sie gerade entfernt haben. Diese beiden sind unterschiedlich und nicht austauschbar.
Neinstein

1

Für Python Version 2.7 funktioniert die @ Anthony-Lösung perfekt, indem Sie python3 wie folgt in python ändern :

sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall

1

Was für mich funktioniert hat, um den Fehler bei der Verwendung zu beheben, pip3war:

sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3

Funktioniert alles:

 demon@UbuntuHP:~$ pip -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

 demon@UbuntuHP:~$ pip2 -V
 pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)

 demon@UbuntuHP:~$ pip3 -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

Vielleicht aktualisiert die neue 10.0.1-Version von pip die Binärdatei in / usr / bin nicht? (was es nicht scheint)

BEARBEITEN: Das gleiche Problem tritt in Ubuntu 18.04 auf. Die beste Lösung , die ich gefunden habe , ist die pip Binärdateien von Symlink /home/<user/.local/binzu /usr/local/binoder /usr/bin(je nach Vorliebe), wie folgt:

ln -sv /home/<user>/.local/bin/pip /usr/local/bin/pip
ln -sv /home/<user>/.local/bin/pip2 /usr/local/bin/pip2
ln -sv /home/<user>/.local/bin/pip2.7 /usr/local/bin/pip2.7
ln -sv /home/<user>/.local/bin/pip3 /usr/local/bin/pip3
ln -sv /home/<user>/.local/bin/pip3.6 /usr/local/bin/pip3.6

HINWEIS: Durch<user> Ihren aktuell laufenden Benutzer ersetzen

Die zugehörigen Versionen (neueste) sind in:

Version 3.6:

/home/demon/.local/lib/python3.6/site-packages/pip (Python 3.6)

Version 2.7:

/home/demon/.local/lib/python2.7/site-packages/pip (Python 2.7)


Dieser hat mein Problem behoben. Die anderen Antworten taten es nicht.
Amin Husni

1
Sie sollten jedoch wirklich nicht direkt mit Dateien /usr/binherumspielen. Und du PATHliegst falsch, wenn /usr/local/bines nicht vorher ist /usr/bin.
Tripleee

Die Pip-Binärdatei existiert in nicht /usr/local/bin. Es ist nur in /home/<user>/.local/binund / oder /home/<user>/.local/lib/python<version>/site-packages/pipin den neuen Versionen (v10.0 + aktualisieren Sie die Binärdatei nicht in /usr/bin). Daher muss eine Kopie oder ein Symlink der Binärdatei entweder in /usr/binoder /usr/local/bin(je nach Benutzerpräferenz) erstellt werden, damit pip global über die Befehlszeile ausgeführt werden kann.
Cryptoboy

Die Verzeichnis-Pip-Binärdateien sind vorhanden und sollten verknüpft / kopiert werden von: demon @ Bionic18: ~ / .local / bin $ ls pip pip2 pip2.7 pip3 pip3.6 Die pipBinärdatei verwendet standardmäßig die neueste auf dem System installierte Version
cryptoboy


0

Ich hatte den gleichen Fehler, arbeitete aber python -m pipimmer noch, also habe ich ihn mit der nuklearen Option behoben sudo python -m pip install --upgrade pip. Es hat es für mich getan.


0

Für das, was es wert ist, hatte ich das Problem mit pip(nicht pip2oder pip3):

$ pip -V
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

Irgendwie (ich kann mich nicht erinnern wie) hatte ich Python-Sachen in meinem ~/.localVerzeichnis installiert . Nachdem ich das Pip-Verzeichnis von dort entfernt hatte, pipfing ich wieder an zu arbeiten.

$ rm -rf /home/precor/.local/lib/python2.7/site-packages/pip
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)


0

Sie können dies versuchen:

sudo ln -sf $( type -P pip ) /usr/bin/pip

3
Während dieser Code die Frage beantworten kann, ist es besser, einen Kontext einzuschließen, der erklärt, wie er funktioniert und wann er verwendet werden soll. Nur-Code-Antworten sind auf lange Sicht nicht sinnvoll.
Giulio Caccin

0

Ich bin auch auf dieses Problem pip pip3gestoßen, als ich das System von 9.0.1 auf 19.2.3 aktualisieren wollte.

Nach dem Ausführen pip3 install --upgrade pipwird die pipVersion 19.2.3. Wurde main()aber pip._internalin der neuesten Version eingezogen , die verlässtpip3 kaputt .

/usr/bin/pip3Ersetzen Sie also in der Datei line 9: from pip import maindurch from pip._internal import main. Das Problem wird behoben, funktioniert genauso fürpython2-pip . (Getestet auf Ubuntu 18.04 Distribution)

Nach der Antwort von @Vincent H.



0

Sie können die Pfade pip und pip3 einfach mit reparieren update-alternatives

Als erstes sollten Sie Ihren aktuellen $PATH Lauf überprüfen echo $PATHund sehen, /usr/local/binwo sich pip3 und pip normalerweise befinden

Es gibt eine Änderung, nach der Ihr System hier sucht, /bin/pipund /bin/pip3 ich werde sagen, dass Sie den PFAD korrigieren, indem Sie ihn zu Ihrer ~/.bash_profileDatei hinzufügen, damit er bestehen bleibt

export PATH=$PATH:/usr/local/bin und dann prüfen, ob es mit which pipund behoben istwhich pip3

Wenn nicht, verwenden Sie update-alternatives, um es endgültig zu beheben

update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30

und wenn Sie pip auf pip3 zeigen möchten, dann

update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30

0

Das hat bei mir funktioniert!

hash -r pip # or hash -d pip

Deinstallieren Sie nun die installierte Pip-Version und installieren Sie sie mit den folgenden Befehlen neu.

python -m pip uninstall pip  # sudo
sudo apt install --reinstall python-pip

Wenn der Rohr defekt ist, verwenden Sie:

python -m pip install --force-reinstall pip

Ich hoffe es hilft!


-1

importiere main aus pip._internal

from pip._internal import main

Bearbeiten Sie den Pip-Code von

sudo nano /usr/bin/pip3

Können Sie die Antwort bearbeiten und besser spezifizieren? Es ist nicht sehr klar, wie man die Datei bearbeitet /usr/bin/pip3...
M. Volf

-1

Wie @cryptoboy sagte - überprüfen Sie, welche Pip / Python-Version Sie installiert haben

 demon@UbuntuHP:~$ pip -V
 demon@UbuntuHP:~$ pip2 -V
 demon@UbuntuHP:~$ pip3 -V

und suchen Sie dann in Ihrem .local / lib / -Ordner nach nicht benötigten Bibliotheken.

Ich habe Einstellungen gesichert, als ich auf ein neueres Kubuntu migriert habe, und hatte den Ordner .local / lib / python2.7 / in meinem Home-Verzeichnis. Installiertes Python 3.6. Ich habe gerade den alten Ordner entfernt und jetzt funktioniert alles super!


-1

Auf Debian müssen Sie apt zuerst aktualisieren ....

sudo apt-get update -qq
sudo apt-get install python-pip -qq
sudo pip install pip --upgrade --quiet
sudo pip2 install virtualenv --quiet

Wenn Sie 'sudo apt-get update -qq' überspringen, wird Ihr Pip beschädigt und zeigt den Fehler 'main kann nicht gefunden werden' an.


-1

Dieser Fehler kann eine Berechtigung sein. Testen Sie also die Ausführung des Befehls mit dem Flag -H :

sudo -H pip3 install numpy

Die Frage besagt sehr deutlich, dass ImportError kein Berechtigungsfehler ist
Anthony Sottile

-1

Verwenden Sie den folgenden Befehl, bevor Sie einen Pip-Befehl ausführen

hash -d pip

Es wird klappen


1
Könnten Sie vielleicht klarstellen, wie es helfen wird, herablassende Kommentare zu entfernen?
Elf
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.