ImportError: Der Name main kann nicht importiert werden, wenn der Befehl pip --version in Windows 7 32 Bit ausgeführt wird


145

Ich habe die neueste Python (2.7.9) installiert, die mit pip und setuptools für Windows 32-Bit gebündelt ist. Ich habe versucht, pip neu zu installieren, aber das Problem besteht weiterhin.

Hier ist der Fehler nach dem Ausführen pip --versionin Administrator cmd:

Traceback (most recent call last):
 File "D:\Python\lib\runpy.py", line 162, in _run_module_as_main
  "__main__", fname, loader, pkg_name)
 File "D:\Python\lib\runpy.py", line 72, in _run_code 
  exec code in run_globals
 File "D:\Python\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main

1
Es kann zu Dateiberechtigungen in Beziehung gesetzt werden dort war 3.4 ein Problem mit Python hier , das gelöst wurde, es lohnt sich eine Überprüfung.
Kobi K

Ich habe die Problemumgehungen mit dem Befehl icacls durchgeführt, aber der Fehler bleibt bestehen.
Woootiness

2
Die Antwort "easy_install -U pip" finden Sie unter stackoverflow.com/questions/28031277/… unpack -url
J1MF0X

Antworten:


172

Obwohl die ursprüngliche Frage aus dem Jahr 2015 zu stammen scheint, scheint dieser "Fehler" auch die Benutzer bei der Installation zu betreffen pip-10.0.0.

Die Problemumgehung besteht nicht darin pip, die Art und Weise zu ändern , in der pip aufgerufen wird. Anstatt den /usr/bin/pipAnruf pipüber Python selbst aufzurufen . Zum Beispiel anstelle der folgenden:

pip install <package>

Wenn ab Python Version 2 (oder die Standard-Python-Binärdatei aufgerufen wird python):

python -m pip install <package>

oder wenn aus Python Version 3:

python3 -m pip install <package> 

Ja, ich erinnere mich nicht, was ich getan habe, um das zu beheben, aber ich halte dies für andere offen.
Woootiness

Als ich den angegebenen Befehl verwendet habe, wurde ein Berechtigungsfehler angezeigt (den ich auch nach dem Ändern von pip gemäß der Antwort von Catalinpopescu erhalten habe). Um jedoch Pakete für den Benutzerbereich herunterzuladen (damit Sie keine Administratorrechte benötigen), verwenden Sie: python3 -m pip install <Paket> --user (funktioniert für Python3, sollte auch für Python2 funktionieren, obwohl nicht getestet)
randmin

Hat mir auf einem Mac geholfen.
Charles Ross

Bessere Antwort. Das Ändern des Quellcodes ist ein Sumpf.
Ozgur

Dies ist ein wirklich guter Weg. Es macht es auch wirklich einfach, die Gewissheit zu bekommen, dass Sie die richtige Version verwenden:python2 -m pip install $package
JamesTheAwesomeDude

257

Der Fehler wurde in Pip 10.0.0 gefunden.

Unter Linux müssen Sie die Datei: / usr / bin / pip ändern von:

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

dazu:

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

1
Es scheint, dass dies die Lösung ist. Ich habe es versucht und bisher kein Problem.
Khue

2
Ich benutze Pip 10.0.1 und der Fehler ist immer noch da. Ihre Lösung hat geholfen. Vielen Dank! Haben Sie diesen Fehler und die Lösung den Entwicklern zurückgemeldet?
Alexey Subach

7
Obwohl diese Lösung funktioniert, sollten Sie sich nicht pipselbst ändern . Unten finden Sie eine übersichtlichere Lösung, um pipstattdessen von Python aus aufzurufen .
Wan Bachtiar

1
Hilft nicht bei "pip 10.0.1". pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7) Verwendung: sudo pip install tensorflow Ausgabe:Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
user_x

3
@creepy_driver: Das manuelle Ändern eines installierten Pakets an die Umgebung wird nicht empfohlen, da beim nächsten Update auf eine andere Version, z. B. 10.0.3, wahrscheinlich dasselbe Problem auftritt. Die Problemumgehung beim Ausführen pipüber installiertes Python zeigt pip an, um die geeignete Umgebung korrekt zu verwenden.
Wan Bachtiar

60

Unter Ubuntu Server 16 habe ich das gleiche Problem mit python27. Versuche dies:

Veränderung

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

Zu

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

1
Arbeitete am Ubuntu 16.04
Sameera Kumarasingha

Das ist keine gute Idee. Wie in einer anderen Antwort von @RichardElkins erwähnt: "Leute sollten ihre Zeit nicht damit verschwenden, installierte Dateien zu bearbeiten, die nach der Installation nicht geändert werden sollen"
juergi

20

Unter Windows 10 habe ich die folgenden Befehle verwendet, um pip herunterzustufen:

python -m pip uninstall pip
python -m pip install pip==9.0.3

Dies sollte auch unter Linux und Mac funktionieren.


1
Es sollte Python sein -m pip install pip == 9.0.3
elelias

@elelias Oh, das habe ich nicht bemerkt. Danke, dass du es mir gesagt hast!
Kiyah

1
Ich musste, python easy_install.py pip==9.0.3weil nach der ersten Zeile Pip nicht gefunden wurde.
Suzanne

3
Funktioniert auch unter Linux und Mac. Es ist eine Umgehung, bis pip / pip3 10 behoben ist. Leute sollten ihre Zeit nicht damit verschwenden, installierte Dateien zu bearbeiten, die nach der Installation nicht geändert werden sollen.
Richard Elkins

Ich hatte nach dem Upgrade Pfadprobleme. Ich habe Folgendes getan, damit es funktioniert. sudo python -m pip deinstalliere pip && sudo apt installiere python-pip --reinstall
webjockey

10

Ich hatte das gleiche Problem, aber die Deinstallation und Neuinstallation mit apt und pip funktionierte bei mir nicht.

Ich habe eine andere Lösung gesehen, die eine einfache Möglichkeit bietet, den pip3-Pfad wiederherzustellen:

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

1
Ich hatte Python 2.7, so i 2.7 den Befehl zum Spiel Python zu ändern , hatte sudo python -m pip deinstallieren pip && sudo apt installieren Python-pip --reinstall
webjockey

funktioniert perfekt auf Ubuntu, aber ich denke, es wird nicht auf Windows funktionieren
Zaki Benz


2

Wenn Sie unter MacOS Python über Homebrew installiert haben, ändern Sie die Zeile in /usr/local/opt/python/libexec/bin/pip

von

from pip.internal import main

zu

from pip._internal import main

Oder verwenden Sie diesen einen Liner: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

Erläuterung:

Das Problem wird durch die Änderungen in Pip Version 10 verursacht, durch die der interne Namespace verschoben wird, main._internalund durch das von Homebrew eingerichtete Bin-Skript, das es immer noch von der alten Stelle aus betrachtet (wo es sich früher in Version 9 befand). Problem und einige Diskussionen https://github.com/pypa/pip/issues/5240


1

Wenn Sie einen Hardlink zum Pip in Ihrem haben PATH (dh wenn Sie mehrere Python-Versionen installiert haben) und dann pip aktualisieren, kann dieser Fehler ebenfalls auftreten.

Die Lösung besteht darin, den Hardlink erneut zu erstellen. Oder noch besser, hören Sie auf, Hardlinks zu verwenden, und verwenden Sie Softlinks.


1
Wie kann man das beheben?
user_x

1

Unter Windows 10 hatte ich das gleiche Problem. PIP 19wurde bereits in meinem System installiert, wurde aber nicht angezeigt. Der Fehler war No Module Found.

python -m pip uninstall pip
python -m pip install pip==9.0.3

Ein Downgrade pipauf 9.0.3 hat für mich gut funktioniert.



0

Es funktioniert unter Ubuntu 16.04. Schritt 1:

 sudo gedit /home/user_name/.local/bin/pip

Eine Datei mit dem Inhalt wird geöffnet:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Ändern Sie das mainin __main__wie folgt:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import __main__

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(__main__._main())

Speichern Sie die Datei und schließen Sie sie. Und du bist fertig!


0

Versuche dies

#!/usr/bin/python
# 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.i
try:
    from pip import main
except ImportError:
    from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())

0

Eine einfache Lösung, die mit Ubuntu funktioniert, das Problem jedoch möglicherweise auch unter Windows behebt:

Ruf einfach an

pip install --upgrade pip

0

Dies löste mein Problem in Ubuntu 18.04 beim Versuch, Python3.6 zu verwenden:

rm -rf ~/.local/lib/python3.6

Sie können den Ordner mit mv an einen anderen Ort verschieben, anstatt ihn zu löschen, um Folgendes zu testen:

mv ~/.local/lib/python3.6 ./python3.6_old

0

Öffnen Sie Ihr Terminal Linux.

hash -d pip

Hallo Carlos, willkommen bei Stack Overflow. Um anderen Benutzern zu helfen, die mit diesem Problem konfrontiert sind, können Sie Ihrer Antwort eine Antwort hinzufügen, um zu klären, was dieser Befehl bewirkt und wie das Problem behoben wird.
CyberJacob

0

In unserem Fall bestand die Lösung für dieses Problem im Jahr 2020 mit Python3 darin, die Python-Installation auf die zu verschieben cloud-init die VM instanziierte.

Wir hatten denselben Fehler festgestellt, als wir versucht hatten, Python mithilfe von Skripten zu installieren, die später im Lebenszyklus der VM von Benutzern aufgerufen wurden. Durch Verschieben desselben Python-Installationscodes in das cloud-initSkript wurde dieses Problem jedoch behoben.

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.