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.
pip install --upgrade pip
Pip auf einem Server aktualisiert habe, auf dem ich keine Administratorrechte habe. Das Deinstallieren von pip mit hatpython -m pip uninstall pip
mein Problem gelöst.Antworten:
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
pip3
Befehl, 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
pip3
Binärdatei wiederherzustellen, müssen Siesudo 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 davonkommenpip3
.quelle
sudo apt install python3-pip --reinstall
Das Problem wurde nicht behoben, ich kann das Paket jedoch mit installierenpython3 -m pip
. Danke für Ihre Hilfe. Ich markiere es als akzeptiert.sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
für Python2!Wir können den Fehler beheben, indem wir die Pip-Datei ändern.
Überprüfen Sie den Speicherort der Datei:
Gehen Sie zu diesem Ort ( / usr / bin / pip ) und öffnen Sie das Terminal
Eingeben:
$ sudo nano pip
Du kannst sehen:
Ändern:
dann Strg + o die Änderungen schreiben und beenden
Hoffe das wird reichen !!
quelle
AttributeError: module 'pip.__main__' has no attribute 'main'
pip3
wird dasmain()
nach verschobenpip._internal
. Die Importanweisung sollte infrom pip._internal import main
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-pip
Paket (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 funktionierendenpip
Befehl (bereits im $ PATH enthalten) sowie die--user
seit 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)Paketnamen mit dem Präfix
python-
sind für Python 2; und mit dem Präfixpython3-
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 --user
Option) 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: Ersudo pip3
zielt auf dasselbe/usr/lib/python3/dist-packages
Verzeichnis 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 verwaltetapt
und sollten nicht geändert werden.Wenn Sie den
pip3 install
Befehl 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 (--user
Option pip, Standardeinstellung in Ubuntu) pip seit 2016), aber nicht systemweit (niesudo 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:
bash
) - und pip3 v10 wird verfügbar (siehepip3 -V
). debians pip3 v8 bleibt installiert, ist aber kaputt; oder$ hash -d pip3 && pip3 -V
zum Aktualisieren des pip3-Pfadnamens im $ PATH. debians pip3 v8 bleibt installiert, ist aber kaputt; oder$ sudo apt remove python3-pip && hash -d pip3
, debians pip3 v8 vollständig zu deinstallieren, zugunsten Ihres neuen pip3 v10.Hinweis: Sie müssen
--user
jedem 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. Niemalssudo pip3
!Weitere Details:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
quelle
pip
lokal mit--user
, dh ohnesudo
, meine Fähigkeit beeinträchtigt, die installierte Wohnung auszuführenpip
? Ich dachte, die beiden würden nebeneinander existieren. Aber wie dieser Kern zeigt, bricht die installierte Wohnung nach mirpython3 -m pip install --user --upgrade pip
. Ich suche keine Lösung - ich bin nur wirklich neugierig zu verstehen, was hier passiert./usr/bin/pip3
und 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 ..~/.local/lib/python3.?/site-packages/pip
das bei den relativen Python-Importen Vorrang vor dem System hat (die benutzerlokale Site hat Vorrang vor den globalen Bibliotheken). Und weil der ältere Wrapperfrom pip import main
eher alsfrom pip._internal
oder seine__main__
Klasse gegen die neuere Version des pip-Pakets versucht, schlägt der Befehl pip aus der Liste mit fehlImportError: 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.--user
.pip install --user
hat es für mich getan. (Ich habe Python 2.7, Python 3.6 und Python 3.7, alle unter Ubuntu 18.04 LTS installiert.)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üfenpip3 --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üfenpip --version
.quelle
Verwenden Sie
python -m pip install
anstelle vonpip install
Beispiel:
Die
pip
(bzw.pip3
) ausführbare Datei wird von Ihrer Distribution (python-pip
Paket unter Ubuntu 16.04) bereitgestellt und befindet sich unter/usr/bin/pip
.Daher wird es beim
pip
Upgrade von pip nicht mit dem Paket selbst auf dem neuesten Stand gehalten und kann beschädigt werden.Wenn Sie nur
python -m pip
direkt verwenden, zB wie in: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
:Die Ubuntu 18.04-
/usr/bin/pip3
Datei bietet:und vermutlich
main
wurdepip
irgendwann 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
pip3
9.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
quelle
Sie können dieses Problem beheben, indem Sie pip neu installieren.
Verwenden Sie einen der folgenden Befehlszeilenbefehle, um pip neu zu installieren:
Python2:
Python3:
quelle
Überprüfen Sie, ob pip auf einem anderen Pfad zwischengespeichert wurde. Rufen Sie dazu $ which pip auf und überprüfen Sie, ob sich der Pfad von dem im Fehler angeforderten unterscheidet. Wenn dies der Fall ist, führen Sie Folgendes aus:
Wenn der Cache leer ist, funktioniert pip wieder. Referenz: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
quelle
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:
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:
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.
Das ist das einzige, was für mich funktioniert hat, aber es hat perfekt funktioniert!
quelle
Wiederherstellen mit
python3 -m pip install --user pip==9.0.1
(oder der Version, die funktioniert hat)quelle
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.
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
quelle
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
quelle
Die obigen Befehle haben bei mir nicht funktioniert, aber sie waren sehr hilfreich:
quelle
In Ubuntu 18.04.1 Bionic Beaver müssen Sie sich abmelden und wieder anmelden (Neustart nicht erforderlich), um die richtige Umgebung zu erhalten.
quelle
Ich benutze
sudo apt remove python3-pip
dannpip
funktioniert.quelle
pip
für Python 2. OP verwendetpip3
, die Python 3-Version vonpip
, die Sie gerade entfernt haben. Diese beiden sind unterschiedlich und nicht austauschbar.Für Python Version 2.7 funktioniert die @ Anthony-Lösung perfekt, indem Sie python3 wie folgt in python ändern :
quelle
Was für mich funktioniert hat, um den Fehler bei der Verwendung zu beheben,
pip3
war:sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Funktioniert alles:
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/bin
zu/usr/local/bin
oder/usr/bin
(je nach Vorliebe), wie folgt:HINWEIS: Durch
<user>
Ihren aktuell laufenden Benutzer ersetzenDie 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)
quelle
/usr/bin
herumspielen. Und duPATH
liegst falsch, wenn/usr/local/bin
es nicht vorher ist/usr/bin
./usr/local/bin
. Es ist nur in/home/<user>/.local/bin
und / oder/home/<user>/.local/lib/python<version>/site-packages/pip
in 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/bin
oder/usr/local/bin
(je nach Benutzerpräferenz) erstellt werden, damit pip global über die Befehlszeile ausgeführt werden kann.pip
Binärdatei verwendet standardmäßig die neueste auf dem System installierte VersionTrick und funktioniert auch
quelle
Ich hatte den gleichen Fehler, arbeitete aber
python -m pip
immer noch, also habe ich ihn mit der nuklearen Option behobensudo python -m pip install --upgrade pip
. Es hat es für mich getan.quelle
Für das, was es wert ist, hatte ich das Problem mit
pip
(nichtpip2
oderpip3
):Irgendwie (ich kann mich nicht erinnern wie) hatte ich Python-Sachen in meinem
~/.local
Verzeichnis installiert . Nachdem ich das Pip-Verzeichnis von dort entfernt hatte,pip
fing ich wieder an zu arbeiten.quelle
Stimmt etwas mit den Paketen nicht, wenn de Datei / usr / bin / pip generiert wird, müssen Sie den Import ändern:
zu
Das löst das Problem, ich bin mir nicht sicher, warum es generiert wurde, aber es sagt etwas in der folgenden Ausgabe:
Nach dem Upgrade von Pip 10 auf pyenv "ImportError: Name 'main' kann nicht importiert werden"
quelle
Sie können dies versuchen:
quelle
Ich bin auch auf dieses Problem
pip
pip3
gestoßen, als ich das System von 9.0.1 auf 19.2.3 aktualisieren wollte.Nach dem Ausführen
pip3 install --upgrade pip
wird diepip
Version 19.2.3. Wurdemain()
aberpip._internal
in der neuesten Version eingezogen , die verlässtpip3
kaputt ./usr/bin/pip3
Ersetzen Sie also in der Dateiline 9
:from pip import main
durchfrom 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.
quelle
Führen Sie die folgenden Befehle aus, um das Problem zu beheben. Führen
python3 -m pip install --upgrade pip
Sie nach dem Ausführen den folgenden Befehl aus.Quelle: https://github.com/pypa/pip/issues/5221
quelle
Sie können die Pfade pip und pip3 einfach mit reparieren
update-alternatives
Als erstes sollten Sie Ihren aktuellen
$PATH
Lauf überprüfenecho $PATH
und sehen,/usr/local/bin
wo sich pip3 und pip normalerweise befindenEs gibt eine Änderung, nach der Ihr System hier sucht,
/bin/pip
und/bin/pip3
ich werde sagen, dass Sie den PFAD korrigieren, indem Sie ihn zu Ihrer~/.bash_profile
Datei hinzufügen, damit er bestehen bleibtexport PATH=$PATH:/usr/local/bin
und dann prüfen, ob es mitwhich pip
und behoben istwhich pip3
Wenn nicht, verwenden Sie
update-alternatives
, um es endgültig zu behebenund wenn Sie pip auf pip3 zeigen möchten, dann
quelle
Das hat bei mir funktioniert!
Deinstallieren Sie nun die installierte Pip-Version und installieren Sie sie mit den folgenden Befehlen neu.
Wenn der Rohr defekt ist, verwenden Sie:
Ich hoffe es hilft!
quelle
importiere main aus pip._internal
Bearbeiten Sie den Pip-Code von
quelle
/usr/bin/pip3
...Wie @cryptoboy sagte - überprüfen Sie, welche Pip / Python-Version Sie installiert haben
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!
quelle
Auf Debian müssen Sie apt zuerst aktualisieren ....
Wenn Sie 'sudo apt-get update -qq' überspringen, wird Ihr Pip beschädigt und zeigt den Fehler 'main kann nicht gefunden werden' an.
quelle
Dieser Fehler kann eine Berechtigung sein. Testen Sie also die Ausführung des Befehls mit dem Flag -H :
quelle
Verwenden Sie den folgenden Befehl, bevor Sie einen Pip-Befehl ausführen
Es wird klappen
quelle