<p>pip ImportError: Name 'main' kann nach dem Update nicht importiert werden</p>

Erstellt am 28. Mai 2018  ·  18Kommentare  ·  Quelle: pypa/pip

Hinweis des Betreuers: Jeder, der dieses Problem immer noch hat, siehe #5599.


Umfeld

  • Pip-Version: ???
  • Python-Version: 3.5.2
  • Betriebssystem: Linux sas-linuxmint 4.4.0-92-generic #115-Ubuntu SMP Do 10. August 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
sas@sas-linuxmint /usr/bin $ pip3 install --user --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
ImportError: cannot import name 'main'
sas@sas-linuxmint /usr/bin $ pip3 install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
duplicate

Hilfreichster Kommentar

hash -d pip
hat bei mir funktioniert

Alle 18 Kommentare

Gleicher Fehler

gleicher Fehler

Dies ist das gleiche wie #5221.

@pradyunsg Warum markieren Sie dies als Duplikat eines geschlossenen Problems? Es ist eindeutig nicht geschlossen, wenn es immer noch ein Problem ist ...

In diesem Fall scheint das besondere Problem zu sein:

  1. pip3 install --user --upgrade pip installiert pip 10 auf der Benutzer-Site, deinstalliert jedoch nicht die System-Site-Kopie von pip.
  2. Der Benutzer führt den System-Wrapper von /usr/bin/pip3 aus, der aus dem vom Betriebssystem bereitgestellten pip 8 stammt. Dieser Wrapper erwartet, pip 8 zu sehen, aber dies ist nicht der Fall, da die Benutzer-Site Vorrang vor der System-Site hat.

Die Lösung besteht darin, den Pip-Wrapper zu verwenden, der installiert wurde, als Sie pip 10 in --user installiert haben. Das bedeutet, dass Sie Ihren PATH ändern müssen, um diesen an erster Stelle zu setzen, oder einen expliziten Pfad verwenden, wenn Sie pip aufrufen.

Technisch gesehen unterscheidet sich das Problem hier geringfügig von #5221, da die Benutzer in diesem Problem den System-Pip überschrieben haben. Aber die Grundursache ist die gleiche - Verwendung eines älteren Pip-Wrappers (vom Betriebssystem bereitgestellt) gegen eine neuere Version von pip. Dies ist kein unterstütztes Szenario, und Sie können es mit der korrekten Verwendung von pip nicht erreichen. Es gibt also kein Pip-Problem, daher schließen wir die Probleme, wenn sie auftreten. Wir verweisen die Benutzer auf Nr. 5221, weil dort der Großteil der Ratschläge zum Aufräumen Ihres Systems nach einem falschen Upgrade zu finden ist.

https://github.com/pypa/pip/issues/5221#issuecomment -381568428 hat bei mir funktioniert

thang@cq-gpu :/mnt/tmp/tqdscripts/azure/nvtf$ pip3 install --user --upgrade pip
Traceback (letzter Anruf zuletzt):
Datei "/usr/bin/pip3", Zeile 9, in
von pip import main
ImportError: Name 'main' kann nicht importiert werden

Das bringt mir nichts. Immer noch das gleiche Problem.

Bitte werfen Sie einen Blick auf #5599 und die dort verlinkten Probleme.

hash -d pip
hat bei mir funktioniert

Ich habe Pip deinstalliert und neu installiert. scheint zu funktionieren.

Ich hatte das gleiche Problem, aber deinstallieren und neu installieren mit apt und pip hat bei mir nicht funktioniert.

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

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

Hallo, Kameraden! Ich habe das gleiche Problem und habe es gelöst. Hier ist meine Lösung.
Zuerst, wenn ich pip install etwas ausführe, kam der Fehler wie folgt:

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

Also cd in die Datei /usr/bin/ und cat pip3, um den Code darin zu sehen. Ich sehe das darin:

`#!/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())
`

Und dann denke ich, dass es nicht im Installationspfad lag. Also CD in den Python3-Pip, wie folgt:

cd /.local/lib/python3.5/site-packages/pip
ps: Sie müssen in Ihrem Computer in die richtigen Richtungen cdieren
Dann katalogisiere ich die Datei, um die Unterschiede zu sehen (Sie können andere Operationen verwenden, um den Code anzuzeigen):

cat __main__.py

Und ich habe das gesehen:

`from __future__ import absolute_import
import os
import sys
# If we are running from a wheel, add the wheel to sys.path
# This allows the usage python pip-*.whl/pip install pip-*.whl
if __package__ == '':
    # __file__ is pip-*.whl/pip/__main__.py
    # first dirname call strips of '/__main__.py', second strips off '/pip'
    # Resulting path is the name of the wheel itself
    # Add that to sys.path so we can import pip
    path = os.path.dirname(os.path.dirname(__file__))
    sys.path.insert(0, path)

from pip._internal import main as _main  # isort:skip # noqa

if __name__ == '__main__':
    sys.exit(_main())
`

Kannst du also den Unterschied sehen? Ich kann herausfinden, dass ich die Datei mit der Datei in /usr/bin/pip3 identisch machen muss

Also habe ich den Code in /.local/lib/python3.5/site-packages/pip kopiert, um den Code in /usr/bin/pip3 zu ersetzen
und das Problem verschwindet!

ps: pip3 oder pip haben bei diesem Problem keinen Unterschied.
Ich freue mich, wenn meine Lösung Ihr Problem löst!

Verwenden Sie pip3 :+1:

du solltest es versuchen
python3 -m pip install --user "Paketname"

@linpanusst ist richtig

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

Das gleiche Problem besteht hier weiterhin. Deepin-Betriebssystem, 15.7. Das Interessante daran ist, dass es als normaler Benutzer fehlschlägt, aber mit sudo gut zu funktionieren scheint:

$ pip3 search audioshare
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
$ sudo pip3 search librosa
librosa (0.6.2)  - Python module for audio and music processing

Die vorgeschlagene Problemumgehung sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall hat keinen Unterschied gemacht.

Eine auf stackoverflow veröffentlichte /usr/bin/pip3 dem normalen Benutzer hilft, aber sudo bricht:

$ sudo pip3 search librosa
Traceback (most recent call last):
  File "/usr/bin/pip3", line 13, in <module>
    sys.exit(__main__._main())
AttributeError: module 'pip.__main__' has no attribute '_main'

Bitte werfen Sie einen Blick auf #5599 und die dort verlinkten Probleme.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen