Pip: Windows In-Place-Pip-Upgrades

Erstellt am 5. Nov. 2013  ·  89Kommentare  ·  Quelle: pypa/pip

Ich bin mir nicht sicher über den Status von pip install --ugrade pip unter Windows.

brauche dies für PEP453

@pfmoore ?

siehe # 188 für eine alte Diskussion darüber.

windows auto-locked bug

Hilfreichster Kommentar

Verwenden Sie unter Windows die Eingabeaufforderungsfenster im Administratormodus. Geben Sie dann command ein
python -m pip install --upgrade pip

Ich hoffe es funktioniert bei dir. So habe ich es geschafft, ein Fenster 10 zu bearbeiten

Viel Glück.

Alle 89 Kommentare

Verwenden Sie python -m pip install --upgrade pip . Ich denke, @vsajip erwog irgendeine Form von Magie in den Exe-Wrappern, um zu bedeuten, dass der Selbstersatz der Exe zum Funktionieren gebracht werden könnte. Aber ich weiß nicht, ob er in der von uns verwendeten Version von distlib etwas getan hat. Ich bin mir nicht sicher, ob dies ohne die Hilfe der Anwendung (pip) möglich ist. Und ich bin mir ziemlich sicher, dass dazu kein Code hinzugefügt wurde.

Persönlich halte ich dies für ein kleines Problem - die Aufforderung an die Benutzer, "python -m pip" zu verwenden, scheint mir eine durchaus akzeptable Antwort zu sein, da das Problem von grundlegender Bedeutung für den Umgang von Windows mit dem Löschen geöffneter Dateien ist.

Letztendlich wird es eine Frage sein, wie viel Komplexität (mit den daraus resultierenden Wartungskosten) und welches Risiko wir eingehen wollen, um dies zu lösen.

Persönlich bin ich damit einverstanden, dass pip install --upgrade pip eine Nachricht druckt, um python -m pip install --upgrade pip . Ich denke nur nicht, dass wir einen Fehler über geöffnete Dateihandles oder was auch immer die Ausnahme ist, auslösen sollten.

Ich wollte gerade das Gleiche sagen.

Hier ist eine Frage: Möchten Sie, dass diese Nachricht nur unter Windows angezeigt wird, oder ist es sinnvoll, dies unter Unix zu sagen (für eine konsistente Benutzererfahrung)? Persönlich möchte ich plattformübergreifend konsistent sein (weil es einfacher ist, dies zu dokumentieren).

Außerdem sollten wir jeden Befehl abfangen, der versucht, pip (neu) zu installieren - pip install -I pip ist beispielsweise ein anderer.

Persönlich denke ich, dass es nur Windows sein sollte. Ich betrachte es als eine Lösung für die Funktionsweise der Windows-Plattform und als ein Ziel, das irgendwann entfernt werden sollte, um später etwas Schöneres zu erreichen.

Ich wusste, dass du das sagen würdest :-(

Ehrlich gesagt glaube ich nicht, dass wir jemals "etwas Schöneres" bekommen werden, im Grunde, weil wir nicht genug Windows-Know-how haben, um es zu entwickeln und zu warten. Ich kenne keine Windows-Software mit einer zufriedenstellenden Selbstersetzung der ausführbaren Lösung. Ich habe sicherlich keine Antwort und ich würde nicht erwarten, dass einer der Unix-basierten Entwickler helfen kann. Selbst wenn wir etwas bekommen haben, ist es wahrscheinlich komplex und daher eine wahrscheinliche Quelle für Bitfäule und obskure Fehler.

Wenn ich eine Lösung mache, die auf allen Plattformen funktioniert, scheint mir die "offizielle Antwort" zu vermeiden, verwirrende Nachrichten an den Benutzer zu senden. Sichern Sie es mit einer Warnung wie beschrieben und wir haben eine robuste Lösung, auch wenn sie nicht ganz so perfekt ist, wie pip install -U pip zum Laufen zu bringen.

Bitte entschuldigen Sie in dieser Antwort ein gewisses Maß an Mürrischkeit, das durch das Gefühl verursacht wird, dass immer die Windows-Plattform diejenige sein muss, die Kompromisse eingeht - ich möchte daraus kein Problem machen. In der Praxis werde ich mit dem Konsens weitermachen. Ich denke nicht, dass es eine große Sache ist.

FWIW mein Ziel nach Abschluss von PEP453 ist es, unsere eigene Testinfrastruktur aufzubauen, die Windows enthält. Hoffentlich werden dadurch einige der Windows-Bitrot-Probleme gelöst.

Ich kann die Mürrischkeit zwar verstehen :) Wenn wir dieses System brandneu entwerfen würden, wäre ich viel anpassbarer, aber ich denke nicht, dass es benutzerfreundlich ist, pip install -U pip für alles, was nicht Windows ist, zu brechen, um dies zu tun Konsistenz bewahren. Wenn dies eine brandneue Sache war, gibt es keine (oder zumindest weniger) Benutzererwartung:]

OK, das klingt fair. Sie haben Recht, dass die historische Verwendung hier wichtiger ist.

Ich habe eigentlich überhaupt kein Gefühl für die Benutzererfahrung unter Unix, daher bin ich wahrscheinlich genauso einseitig denkend wie jeder andere. Ich muss versuchen zu sehen, wie sich die Verwendung von Python unter Linux anfühlt. Gibt es eine gute Ressource "Python unter Linux für Anfänger", die zeigt, wie eine Python (3) -Umgebung eingerichtet, die verschiedenen Tools eingerichtet usw. werden? [Eine Sache, die ich immer finde, wird nicht behandelt, ist, wie man "Python" standardmäßig Python 3 laufen lässt, wie man "virtualenv" dazu bringt, Python 3-Virtualenvs standardmäßig zu erstellen, all diese Dinge - es scheint mir, dass Python Seltsamerweise ist 3 unter Unix viel zweitklassiger als unter Windows.]

Normalerweise möchten Sie nicht, dass python unter * nix auf python3 zeigt, da das System Python verwendet und nicht alle Bibliotheken auf Python3 portiert werden. Es gibt jedoch einige Linux-Distributionen, die Python3 als Standard haben ... Ich denke, Arch? Und vielleicht die nächste Fedora?

Hmm, ich spreche nicht auf Systemebene, aber Sie können wirklich nicht auswählen, was für Python in Ihrem persönlichen Konto verwendet werden soll? Das macht Python 3 meiner Meinung nach definitiv zweitklassig ... Aber es erklärt, warum Unix-Benutzer Dinge wie "pip3" oder "pip3.3" nicht so hässlich finden wie Sünde :-)

(Wie auch immer, wir sind hier weit vom Thema entfernt, also egal).

Sie können Ihre Shell so einrichten, dass sie ~ / bin / vor dem System-Bin hat, und dort einen Symlink von Python zu Python3 hinzufügen, aber ja, offtopic. Ich helfe Ihnen gerne weiter, wenn Sie tatsächlich daran interessiert sind, Dinge einzurichten:] IRC oder E-Mail.

Ich glaube, meine Arbeit, auf die sich Paul bezog, bestand nur darin, den 'Deleteme'-Tanz zum Ersetzen verwendeter Dateien (dh Exe-Wrapper) zu implementieren - das ist in distlib Python-Code, nicht in den .exe-Wrappern. Dies befindet sich im Modul distlib.scripts und sollte immer dann ausgeführt werden, wenn dieses Modul zum Erstellen eines Skripts verwendet wird.

Vielleicht ist das schon für Wheels gelöst? Und es ist sonst ein Setuptool-Problem?

Klingt möglich. Ich werde heute einige Tests machen, wenn ich kann.

Leider nicht, zumindest mit "pip install -I pip". (Es ist schwierig, ein tatsächliches Upgrade zu testen, da nur die absolut neueste Version von pip Skript-Wrapper unterstützt.):

>pip install -f $x -I pip --use-wheel --no-index --pre
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking pip
Installing collected packages: pip
  Found existing installation: pip 1.5.dev1
    Uninstalling pip:
      Successfully uninstalled pip
Cleaning up...
Exception:
Traceback (most recent call last):
  File "C:\Work\Scratch\xxyy\lib\shutil.py", line 365, in _rmtree_unsafe
    os.unlink(fullname)
PermissionError: [WinError 5] Access is denied: 'c:\\users\\uk03306\\appdata\\local\\temp\\pip-zhbsiy-uninstall\\work\\scratch\\xxyy\\scripts\\pip.exe'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Work\Scratch\xxyy\lib\site-packages\pip\basecommand.py", line 121, in main
    status = self.run(options, args)
  File "C:\Work\Scratch\xxyy\lib\site-packages\pip\commands\install.py", line 258, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "C:\Work\Scratch\xxyy\lib\site-packages\pip\req.py", line 1330, in install
    requirement.commit_uninstall()
  File "C:\Work\Scratch\xxyy\lib\site-packages\pip\req.py", line 557, in commit_uninstall
    self.uninstalled.commit()
  File "C:\Work\Scratch\xxyy\lib\site-packages\pip\req.py", line 1743, in commit
    rmtree(self.save_dir)
  File "C:\Work\Scratch\xxyy\lib\site-packages\pip\util.py", line 42, in rmtree
    onerror=rmtree_errorhandler)
  File "C:\Work\Scratch\xxyy\lib\shutil.py", line 460, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:\Work\Scratch\xxyy\lib\shutil.py", line 362, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\Work\Scratch\xxyy\lib\shutil.py", line 362, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\Work\Scratch\xxyy\lib\shutil.py", line 362, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\Work\Scratch\xxyy\lib\shutil.py", line 362, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\Work\Scratch\xxyy\lib\shutil.py", line 367, in _rmtree_unsafe
    onerror(os.unlink, fullname, sys.exc_info())
  File "C:\Work\Scratch\xxyy\lib\site-packages\pip\util.py", line 61, in rmtree_errorhandler
    func(path)
PermissionError: [WinError 5] Access is denied: 'c:\\users\\uk03306\\appdata\\local\\temp\\pip-zhbsiy-uninstall\\work\\scratch\\xxyy\\scripts\\pip.exe'

Storing complete log in C:\Users\uk03306\pip\pip.log

pip nicht distlib.scripts , um Skripte zu installieren ... Ich denke, es passt nicht in den pip Workflow.

Ich vermute, es liegt daran, dass wir eine Deinstallation und dann eine Installation durchführen, anstatt eine Installation zu überschreiben, was vorhanden ist (aus offensichtlichen Gründen).

Windows erlaubt nicht das Überschreiben oder Löschen offener Exe-Dateien, aber das Umbenennen / Verschieben.

Nun, mit etwas Tomfoolery mit der Win32-API können Sie das Handle auf pip.exe ähnlich wie Sie es können, wenn Sie den Prozess-Explorer von Sysinternal verwenden.

Ich glaube nicht, dass Sie alle Handles für die aktuell ausgeführte Exe schließen können. Aber wenn Sie Arbeitscode als Beispiel haben, würde ich ihn gerne sehen, da dies seit langem ein Problem ist, über das die Leute diskutiert haben, und der Konsens war immer, dass es nicht möglich ist (außer durch Tricks wie "später umbenennen und löschen"). ). Arbeitscode, der dies tut, wäre für die Community äußerst nützlich.

Stoßen Sie auf das gleiche Problem.

Kann pip.exe als schnellen Hack erkennen, dass es vor der Ausführung aktualisiert wird, und sich mit python -m pip {{ sys.argv }} neu starten?

Ich denke nicht, dass das tatsächlich funktioniert.

Aber vielleicht ein dummer Gedanke, afaik die .exe muss nicht aktualisiert werden, können wir nur Sonderfall pip.exe und lassen es in Ruhe? Würde möglicherweise eine pip.exe nach einer Installation herumliegen lassen.

@dstufft richtig, " @techtonik es unter Windows exec -Aufruf gibt.

Technisch gesehen muss pip.exe möglicherweise aktualisiert werden, wenn sich der Einstiegspunkt ändert oder wenn der Distlib-Wrapper-Code geändert wird. Das ist nicht üblich, aber es kann passieren (schon früh hat sich der Distlib-Code ein wenig geändert, bis sich die Dinge beruhigt haben). Möglicherweise können Sie das neue pip.exe an einen temporären Speicherort schreiben. Wenn es mit dem aktuellen identisch ist, überspringen Sie es. Sie würden Fehler nicht vermeiden, wenn sie aktualisiert werden müssten, aber in 99% der Fälle, in denen dies nicht der Fall war, wäre alles in Ordnung.

Übrigens drehen wir uns hier im Kreis. Laut Vinays früheren Kommentaren wird dies in distlib gelöst (wo ich denke, dass es gelöst werden sollte), aber pip verwendet die API nicht so, dass es funktioniert. Wenn wir die distlib-Lösung verwenden könnten, dann großartig. Andernfalls brauchen wir jemanden, der eine pip-spezifische Lösung schreibt (und ich bin weiterhin skeptisch, dass dies auf eine robuste, wartbare Art und Weise erfolgen kann, die nicht weitaus komplexer ist, als es das Problem rechtfertigt).

Vorschlag:

  1. Jemand fügt den Pip-Dokumenten unter http://www.pip-installer.org/en/latest/installing.html#install-or-upgrade-pip einen Abschnitt hinzu und stellt fest, dass die Problemumgehung python -m pip unter Windows erforderlich ist beim Upgraden von Pip mit sich selbst. Ich könnte irgendwann die Gelegenheit dazu bekommen, aber PRs von Leuten, die zu diesem Thema beigetragen haben, würden dankbar angenommen :-).
  2. Wenn jemand eine tragfähige Lösung hat und bereit ist, diese umzusetzen, sollte er eine PR erstellen, und wir können den tatsächlichen Code überprüfen, anstatt die vorgeschlagenen Ansätze.

Ich denke, wir sind in der Phase, in der der tatsächliche Arbeitscode das einzige ist, was dieses Problem vorantreiben wird.

Ich bin -1 beim Aufblähen der Dokumente, ohne andere Lösungen auszuprobieren.

Ich bin +1 bei der Dokumentation dessen, was gerade funktioniert.

Selbst mit Dokumentkommentaren ist es immer noch eine Problemumgehung - keine Lösung, und Sie haben eine falsche Eingabeaufforderung für Windows.

Vielleicht ist das verrückt, aber ich mache immer nur das:

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

Natürlich erfordert dies eine Libcurl haben, aber es gibt Windows - Binaries verfügbar hier .

Ich habe versucht, es auf einem Mac zu installieren, aber ich habe es erhalten

Alexs-MacBook- Air: Pipmodules aleand $ pip install -U pip
-bash: pip: Befehl nicht gefunden
Alexs-MacBook- Air: Pipmodules aleand $ python get-pip.py
Pip herunterladen / entpacken
Herunterladen von pip-1.5.5-py2.py3-none-any.whl (1,2 MB): 1,2 MB heruntergeladen
Gesammelte Pakete installieren: pip
Aufräumen...
Ausnahme:
Traceback (letzter Anruf zuletzt):
Datei "/var/folders/8g/b9q8snrd5ln_d5hqnwh2_86r0000gn/T/tmpFTGrC3/pip.zip/pip/basecommand.py", Zeile 122, in main
status = self.run (Optionen, Argumente)
Datei "/var/folders/8g/b9q8snrd5ln_d5hqnwh2_86r0000gn/T/tmpFTGrC3/pip.zip/pip/commands/install.py", Zeile 283, wird ausgeführt
request_set.install (install_options, global_options, root = options.root_path)
Datei "/var/folders/8g/b9q8snrd5ln_d5hqnwh2_86r0000gn/T/tmpFTGrC3/pip.zip/pip/req.py", Zeile 1435, installiert
request.install (install_options, global_options, _args, * _kwargs)
Datei "/var/folders/8g/b9q8snrd5ln_d5hqnwh2_86r0000gn/T/tmpFTGrC3/pip.zip/pip/req.py", Zeile 671, installiert
self.move_wheel_files (self.source_dir, root = root)
Datei "/var/folders/8g/b9q8snrd5ln_d5hqnwh2_86r0000gn/T/tmpFTGrC3/pip.zip/pip/req.py", Zeile 901, in move_wheel_files
pycompile = self.pycompile,
Datei "/var/folders/8g/b9q8snrd5ln_d5hqnwh2_86r0000gn/T/tmpFTGrC3/pip.zip/pip/wheel.py", Zeile 215, in move_wheel_files
clobber (source, lib_dir, True)
Datei "/var/folders/8g/b9q8snrd5ln_d5hqnwh2_86r0000gn/T/tmpFTGrC3/pip.zip/pip/wheel.py", Zeile 205, in Clobber
os.makedirs (destdir)
Datei "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", Zeile 157, in Makedirs
mkdir (Name, Modus)
OSError: [Errno 13] Berechtigung verweigert: '/Library/Python/2.7/site-packages/pip'

Speichern des Debug-Protokolls für einen Fehler in /Users/aleand/Library/Logs/pip.log

@zaducu , ich kann Ihrem sudo erhöhen:

$ sudo curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

Um sudo verwenden, müssen Sie sich möglicherweise zu /etc/sudousers hinzufügen. Google es und Sie finden zahlreiche Links, die zeigen, wie das geht.

Der Mac ist intelligent und hält Ihre Pakete in /Library/Python anstatt Ihren Ordner /System/Frameworks/Python.framework site-pacakges beschädigen. Yay! Um auf diesen Ordner zugreifen zu können, müssen Sie ein Administrator mit Root-Rechten sein, daher sudo .

Eine Alternative, die Sie in Betracht ziehen sollten, besteht darin, Ihre persönlichen Pakete und Module mithilfe von virtualenv und / oder einem Ordner .local . Um Pakete in einem lokalen Ordner zu installieren, verwenden Sie distutils anstelle von pip und befolgen Sie die Anweisungen zum Installieren von Python-Modulen .

Andere Alternativen zur Verwendung des vorinstallierten Python sind die Verwendung von offiziellem Python , Homebrew , MacPorts, Fink oder das Erstellen selbst.

Für offizielles Python benötigen Sie immer noch sudo aber die meisten Elemente werden in /System/Frameworks nicht /System/Library/Frameworks installiert. Für Homebrew sollten Sie nicht sudo benötigen. Ich kann nicht für MacPorts oder Fink sprechen.

Habe immer noch das gleiche Problem unter Windows, Upgrade von 1.5.4 auf 6.0.8:

E: \ Distrib \ Programming> pip install -U pip
Herunterladen / Entpacken von Pip von https://pypi.python.org/packages/py2.py3/p/pip/pip-6.0.8-py2.py3-none-any.whl#md5 = 41e73fae2c86ba2270ff51c1d86
f7e09
Gesammelte Pakete installieren: pip
Vorhandene Installation gefunden: pip 1.5.4
Pip deinstallieren:
Pip erfolgreich deinstalliert
Aufräumen...
Ausnahme:
Traceback (letzter Anruf zuletzt):
Datei "C: \ Python \ 3.3-32 \ lib \ shutil.py", Zeile 371, in _rmtree_unsafe
os.unlink (vollständiger Name)
PermissionError: [WinError 5] :тказано в доступе: 'c: \ users \ bialix \ appdata \ local \ temppip-6i_i7a-uninstallpython \ 3.3-32 \ scripts \ p
ip.exe '

Während der Behandlung der obigen Ausnahme ist eine weitere Ausnahme aufgetreten:

Traceback (letzter Anruf zuletzt):
Datei "C: \ Python \ 3.3-32 \ lib \ site-packagespip \ basecommand.py", Zeile 122, in main
write_debug_log = check_path_owner (debug_log_path)
Datei "C: \ Python \ 3.3-32 \ lib \ site-packagespip \ command \ install.py", Zeile 283, wird ausgeführt
build_delete = (nicht (options.no_clean oder options.build_dir))
Datei "C: \ Python \ 3.3-32 \ lib \ site-packagespipreq.py", Zeile 1443, in Installation
Datei "C: \ Python \ 3.3-32 \ lib \ site-packagespipreq.py", Zeile 610, in commit_uninstall
Datei "C: \ Python \ 3.3-32 \ lib \ site-packagespipreq.py", Zeile 1860, in Festschreiben
Datei "C: \ Python \ 3.3-32 \ lib \ site-packagespip \ util.py", Zeile 43, in rmtree
Datei "C: \ Python \ 3.3-32 \ lib \ shutil.py", Zeile 478, in rmtree
return _rmtree_unsafe (Pfad, Fehler)
Datei "C: \ Python \ 3.3-32 \ lib \ shutil.py", Zeile 368, in _rmtree_unsafe
_rmtree_unsafe (vollständiger Name, Fehler)
Datei "C: \ Python \ 3.3-32 \ lib \ shutil.py", Zeile 368, in _rmtree_unsafe
_rmtree_unsafe (vollständiger Name, Fehler)
Datei "C: \ Python \ 3.3-32 \ lib \ shutil.py", Zeile 368, in _rmtree_unsafe
_rmtree_unsafe (vollständiger Name, Fehler)
Datei "C: \ Python \ 3.3-32 \ lib \ shutil.py", Zeile 373, in _rmtree_unsafe
onerror (os.unlink, vollständiger Name, sys.exc_info ())
Datei "C: \ Python \ 3.3-32 \ lib \ site-packagespip \ util.py", Zeile 62, in rmtree_errorhandler
PermissionError: [WinError 5] :тказано в доступе: 'c: \ users \ bialix \ appdata \ local \ temppip-6i_i7a-uninstallpython \ 3.3-32 \ scripts \ p
ip.exe '

Änderungen zu diesem Thema?

Es kann in keiner praktischen Hinsicht repariert werden (zumindest müsste jemand einen vollständigen, funktionierenden Patch zur Bewertung bereitstellen, wenn er dies glaubt, da noch niemand einen Weg gefunden hat, dies zu beheben - es handelt sich im Wesentlichen um eine Windows-Einschränkung).

Der richtige Weg, um pip unter Windows zu aktualisieren, ist python -m pip install -U pip .

@pfmoore Was ist mit Python 2.6?

[py26] C:\Users\IEUser>python -m pip --version
C:\Users\IEUser\Anaconda\envs\py26\python.exe: pip is a package and cannot be directly executed

@ Dalcinl Seufz . Ich hasse es, an Python 2.6 denken zu müssen :-)

Wenn ich mich erinnere, funktioniert python -m pip.__main__ dort. Ich habe momentan keine Kopie von Python 2.6 zur Hand, um es zu testen, sorry ...

Ich habe gerade auf Python 2.6 getestet und python -m pip.__main__ funktioniert dort tatsächlich.

Hallo!

python -m pip install -U pip funktioniert bei mir nicht (w7, Powershell, installierte Python via Chocolatey); Die Installation schlägt mit Berechtigungsproblemen fehl:

PS C:\tools> python --version
Python 3.4.3
PS C:\tools> pip --version
pip 6.0.8 from C:\tools\python\lib\site-packages (python 3.4)
PS C:\tools> python -m pip install -U pip
You are using pip version 6.0.8, however version 7.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-7.0.1-py2.py3-none-any.whl#md5=9b403ba9b82d4a1e5fda5b6cc8952b57
  Using cached pip-7.0.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 6.0.8
    Uninstalling pip-6.0.8:
      Exception:
      Traceback (most recent call last):
        File "C:\tools\python\lib\shutil.py", line 523, in move
          os.rename(src, real_dst)
      PermissionError: [WinError 5] Access is denied: 'c:\\tools\\python\\lib\\site-packages\\pip-6.0.8.dist-info\\description.rst' -> 'C:\\Users\\Administrator\\AppData\\Local\\Temp\\pip-4ghq1oa9-uninstall\\tools\\python\\lib\\site-packages\\pip-6.0.8.dist-info\\description.rst'

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "C:\tools\python\lib\site-packages\pip\basecommand.py", line 232, in main
          status = self.run(options, args)
        File "C:\tools\python\lib\site-packages\pip\commands\install.py", line 347, in run
          root=options.root_path,
        File "C:\tools\python\lib\site-packages\pip\req\req_set.py", line 543, in install
          requirement.uninstall(auto_confirm=True)
        File "C:\tools\python\lib\site-packages\pip\req\req_install.py", line 667, in uninstall
          paths_to_remove.remove(auto_confirm)
        File "C:\tools\python\lib\site-packages\pip\req\req_uninstall.py", line 126, in remove
          renames(path, new_path)
        File "C:\tools\python\lib\site-packages\pip\utils\__init__.py", line 316, in renames
          shutil.move(old, new)
        File "C:\tools\python\lib\shutil.py", line 536, in move
          os.unlink(src)
      PermissionError: [WinError 5] Access is denied: 'c:\\tools\\python\\lib\\site-packages\\pip-6.0.8.dist-info\\description.rst'

Gedanken?

Es gibt keine Möglichkeit, diese Datei zu sperren oder dass Sie keine Berechtigung zum Löschen haben sollten. Könnte es ein schokoladiges Problem sein? Können Sie diese Datei manuell an einer Eingabeaufforderung löschen?

@AmazingHorse hast du versucht

curl -k https://bootstrap.pypa.io/get-pip.py | python

Angenommen, Sie haben CURL ?

Interessant, @pfmoore , diese Datei ist auch an einer Administrator-Eingabeaufforderung gesperrt.

Klingt also eher nach einem Windows-Berechtigungsproblem als nach etwas mit pip.

Hat das damit zu tun, dass mein Python außerhalb der Windows-Verzeichnisstruktur in C: installiert wurde?

Ich werde das googeln, aber ich bin gespannt, ob jemand hier posten kann, woran er denken könnte, dass dies verursacht wird.

Prost

@AmazingHorse Ehrlich gesagt habe ich keine Ahnung. Die andere Möglichkeit ist, dass es etwas Besonderes gibt, wie Chocolatey Python installiert - vielleicht melden Sie das Problem auf ihrem Tracker (ich nehme an, sie haben eines?) Und sehen, was sie sagen.

Aber ja, es ist kein Pip-Problem.

Windows ermöglicht das Umbenennen / Verschieben von Speicherzuordnungsdateien (als Bild oder Daten zugeordnet) in einen neuen Namen auf demselben Volume. Der rmtree -Fehlerbehandler kann also versuchen, die Datei umzubenennen, um sie in das temporäre Basisverzeichnis zu verschieben. Zumindest dort wird das Entfernen des Verzeichnisses nicht beeinträchtigt. Diese Problemumgehung schlägt fehl, wenn sich die Datei auf einem anderen Volume als das temporäre Verzeichnis befindet oder wenn eine Freigabeverletzung vorliegt oder wenn die ACL der Datei den Vorgang verhindert. Aber keines davon sollte in diesem Fall zutreffen.

Wenn die Gruppe Administratoren im Prozesstoken aktiviert ist, kann die umbenannte Datei beim Neustart des Systems zum Löschen eingeplant werden. Verwenden Sie einfach ctypes, um MoveFileExW(path, None, MOVEFILE_DELAY_UNTIL_REBOOT) aufzurufen. Dies schlägt jedoch für normale Benutzer fehl, da sie den Registrierungswert PendingFileRenameOperations des Sitzungsmanagers nicht ändern dürfen.

pip unter Windows 7/10 funktioniert einwandfrei, bis auf ein Update> pip install --upgrade pip
Ich versuche, so wenig wie möglich auf meine C: \ (SSD) zu laden und die Software ab D: \ NUC \ im Baum zu installieren
Folgendes sehe ich:

D:\NUC\Python34>pip install --upgrade pip
You are using pip version 6.0.8, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-7.1.2-py2.py3-none-any.whl#md5=5ff9fec0be479e4e36df467556deed4d
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB)
    100% |################################| 1.1MB 204kB/s
Installing collected packages: pip
  Found existing installation: pip 6.0.8
    Uninstalling pip-6.0.8:
      Exception:
      Traceback (most recent call last):
        File "D:\NUC\Python34\lib\shutil.py", line 523, in move
          os.rename(src, real_dst)
      OSError: [WinError 17] The system cannot move the file to a different disk drive: 'd:\\nuc\\python34\\scripts\\pip.exe' -> 'C:\\Users\\David\\AppData\\Local\\Temp\\pip-247i52js-uninstall\\nuc\\python34\\scripts\\pip.exe'

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "D:\NUC\Python34\lib\site-packages\pip\basecommand.py", line 232, in main
        File "D:\NUC\Python34\lib\site-packages\pip\commands\install.py", line 347, in run
        File "D:\NUC\Python34\lib\site-packages\pip\req\req_set.py", line 543, in install
        File "D:\NUC\Python34\lib\site-packages\pip\req\req_install.py", line 667, in uninstall
        File "D:\NUC\Python34\lib\site-packages\pip\req\req_uninstall.py", line 126, in remove
        File "D:\NUC\Python34\lib\site-packages\pip\utils\__init__.py", line 316, in renames
        File "D:\NUC\Python34\lib\shutil.py", line 536, in move
          os.unlink(src)
      PermissionError: [WinError 5] Access is denied: 'd:\\nuc\\python34\\scripts\\pip.exe'

Der AppData-Ordnerpfad ist auf meinem Laufwerk D: verfügbar und fragt sich, wie diese Situation für nachfolgende Tools und die Verwendung am besten behandelt werden kann. Ich dachte an eine Kreuzung, aber es wird immer noch wie eine andere Fahrt erscheinen. Vielleicht schreiben Sie die Unterschiede des erwarteten Standorts zum tatsächlichen Standort, um zu überprüfen, ob der richtige Pfad angegeben ist? Zuvor installierte pip Django einwandfrei (beschwerte sich jedoch über die Version, die zu dieser Entdeckung führte). hmmm ... und jetzt scheint pip kaputt zu sein.

D:\NUC\Python34\Scripts>pip -h
Traceback (most recent call last):
  File "D:\NUC\Python34\lib\runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "D:\NUC\Python34\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\NUC\Python34\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: No module named 'pip'

D:\NUC\Python34\Scripts>dir
 Volume in drive D is TOSHIBA EXT
 Volume Serial Number is E085-D5D7

 Directory of D:\NUC\Python34\Scripts

08/25/2015  09:08 AM    <DIR>          .
08/25/2015  09:08 AM    <DIR>          ..
08/25/2015  09:08 AM            92,045 django-admin.exe
08/25/2015  09:08 AM               136 django-admin.py
08/25/2015  09:01 AM               346 easy_install-3.4-script.py
08/25/2015  09:01 AM            65,536 easy_install-3.4.exe
08/25/2015  09:01 AM               651 easy_install-3.4.exe.manifest
08/25/2015  09:01 AM               338 easy_install-script.py
08/25/2015  09:01 AM            65,536 easy_install.exe
08/25/2015  09:01 AM               647 easy_install.exe.manifest
08/25/2015  08:19 AM            91,984 pip.exe
08/25/2015  08:19 AM            91,984 pip3.4.exe
08/25/2015  08:19 AM            91,984 pip3.exe
08/25/2015  09:08 AM    <DIR>          __pycache__
              11 File(s)        501,187 bytes
               3 Dir(s)  328,895,152,128 bytes free

D:\NUC\Python34\Scripts>

Sie müssen python.exe -m pip install --upgrade pip tun

Unter Python 2.6 müssen Sie python -m pip.__main__ install -U pip ausführen

Ich halte die aktuelle Situation für sehr schlecht für neue Python-Benutzer sowie für alte Python-Benutzer wie mich, die normalerweise kein Windows verwenden. Ich bin vollkommen in Ordnung mit python -m pip install --upgrade pip , aber ich denke wirklich, dass pip install --upgrade pip automatisch unter Windows empfehlen sollte. @dstufft hat dies bereits 2013 vorgeschlagen. Gibt es einen guten Grund, dies nicht zu tun?

PS: Entschuldigen Sie, dass Sie # 3462 als Duplikat dieses Problems gemeldet haben. Ich habe dieses Problem nicht gefunden, indem ich den Tracker nach WindowsError durchsucht habe. Hoffentlich werden nach diesem Kommentar andere in der Zukunft.

Nach meinem besten Wissen ist es bereits der Befehl, den pip dem Benutzer vorschlägt, wenn er eine neue Version von sich selbst erkennt. Die Situation ist nicht so schlimm.

@pkkaklarck Der Hauptgrund dafür, dass es nicht pip.exe anstatt von python -m pip . Und selbst wenn Sie dies feststellen, müssen Sie überprüfen, ob pip in den zu installierenden Dingen enthalten ist (berücksichtigen Sie pip install --upgrade -r http://some.remote/requirements.txt - bis Sie die Anforderungsdatei gelesen haben, ist es wahrscheinlich zu spät, um eine Ausgabe zu erstellen die Nachricht).

Natürlich ist etwas, das nicht zu 100% perfekt ist, eine völlig vernünftige Sache - es ist wirklich wichtig, sicherzustellen, dass wir keine Einwände gegen vollständig gültige Verwendungen erheben, anstatt sicherzustellen, dass wir alle Eckfälle erfassen.

Wir würden sicherlich in Betracht ziehen, eine PR zusammenzuführen, um dieses Problem zu beheben, aber ich denke, keiner der Core-Pip-Entwickler findet das Problem ausreichend problematisch, um selbst eine Lösung zu versuchen (ich bin wahrscheinlich der schwerste Windows-Benutzer in den Core-Entwicklern, und Ich finde es ziemlich einfach, mich daran zu erinnern, python -m pip .

Ich stelle mir vor, um herauszufinden, ob wir pip[.exe] oder nicht

"pip" in os.path.basename(sys.argv[0])

würde gut funktionieren. Es würde wahrscheinlich auch ausreichen, nur zu warnen, um [-U|--upgrade] und pip im Aufruf zu sehen, um 90% der Aufrufe zu korrigieren.

@stonebig : Könnten Sie klarstellen, wann dieser Befehl empfohlen wird? Ich habe pip install -U pip nach einer neuen Python 2.7.11-Installation ausprobiert und das ist mit diesem Fehler fehlgeschlagen:

WindowsError: [Fehler 5] Der Zugriff wird verweigert: 'c: \ users \ koulutus \ appdata \ local \ temppip-65z4kx-uninstallpython27 \ scriptspip.exe'

@pfmoore : Das @Ivoz dachte ich, pip.exe wäre in sys.argv . Alternativ sollte es möglich sein, die WindowsError zu fangen und darauf zu reagieren.

@ Ivoz funktioniert das? Ich dachte, der pip.exe-Wrapper hat Python als Unterprozess aufgerufen, also würde es nicht funktionieren. Ein schneller Test (Drucken von sys.argv[0] in pip.main() ) zeigt jedoch:

>py -m pip
C:\Users\Gustav\AppData\Local\Programs\Python\Python35\lib\site-packages\pip\__main__.py

Usage:
...

>pip
C:\Users\Gustav\AppData\Local\Programs\Python\Python35\Scripts\pip

Usage:
...

>pip.exe
C:\Users\Gustav\AppData\Local\Programs\Python\Python35\Scripts\pip

Usage:

Es funktioniert also, aber Sie müssen vorsichtig sein, wie Sie pip in sys.argv[0] (beachten Sie, dass das erste Beispiel das Verzeichnis pip im Pfad zu __main__.py )

Vielen Dank für den Hinweis. Ich habe heute etwas gelernt :-)

@pekkaklarck Das Problem beim Abfangen von WindowsError (wenn ich mich recht erinnere) ist, dass es ziemlich spät passiert und die Installation teilweise abgeschlossen ist (und nicht einfach zurückgesetzt werden kann).

Aber ich möchte niemanden davon abhalten, dieses Problem zu beheben, also lasse ich es dabei :-)

aber du musst vorsichtig sein, wie du pip in sys.argv entdeckst [0]

@pfmoore daher der Aufruf von os.path.basename .

@ Ivoz Seufz . Zu spät in der Nacht hier. Ja offensichtlich :-)

@ Pekkaklarck . Beispiel: Wenn Sie pip list (unter Windows) ausführen. Soweit ich mich in den Diskussionen des letzten Jahres erinnere:

  • Dies war die einzige Lösung, die sich das Pypa-Team als zuverlässig vorstellte.
  • Es wird nur unter Windows angezeigt.

pip_example

Es könnte eine bessere Lösung geben, aber ich gehe davon aus, dass dies bereits zu 80% eine perfekte Antwort aus der vorherigen Situation ist.

Vielleicht wäre eine bessere Lösung, eine "upgrade_pip.bat" mit einer Python-Standard-Windows-Installation zu liefern, die nicht auf "pip" beschränkt ist, und das würde diesen Befehl ausführen. (oder pip_update.bat um besser zu conda zu passen?)

Ich habe dies heute getroffen, als ich in die neue Windows Python-Benutzererfahrung eintauchte. Es war schrecklich.
Können wir -m für diesen Befehl automatisch machen? (Vielleicht geben Sie dem Upgrade von Pip einen eigenen Befehl?)

Kein Benutzer sollte dies jemals sehen müssen, insbesondere nachdem er genau den Befehl _pip ausgeführt hat, der ihn zum Ausführen aufgefordert hat.

screen shot 2016-02-23 at 9 51 53 pm

Ich denke, wir haben bereits das Protokollierungssetup in neueren Versionen von pip als 7.0.1, um Windows-Benutzern anzuweisen, python -m pip install --upgrade pip anstelle von pip install --upgrade pip .

: funkelt :: Kuchen :: funkelt:

Ja, seit 7.1 vgl. # 2830

\Ö/

Ich kann meinen Pip bei Win 10 nicht aktualisieren. Was ist los?

default

@ Grasx
Wenn Sie wirklich wissen wollen, was los ist, lesen Sie bitte diesen Thread. Wenn Sie nur daran interessiert sind, dass dies funktioniert, lesen Sie bitte die letzte Zeile der Ausgabe, die Sie erhalten haben, und vergleichen Sie sie mit dem, was Sie ausgeführt haben.

@ Piotr-Dobrogost
Ist es? Die letzte rote Linie scheint auf ein Dekodierungsproblem hinzuweisen, eher auf den Fehler bei der Zugriffsverweigerung, der das übliche Ergebnis einer Aktualisierung unter Windows ist. Könnte das Problem von @grasx mit der Verwendung einer kyrillischen Codepage zusammenhängen?

Ich bezweifle, dass das aufgetretene Problem

@nmusatti
Du hast recht. Mein Fehler.

@ piotr-dobrogost @nmusatti @pekkaklarck Vielen Dank, ich habe den Benutzernamen geändert, sodass er jetzt nur noch ASCII-Zeichen enthält und pip erfolgreich auf 8.1 aktualisiert hat

@grasx hat den Benutzernamen geändert? Ich bin verwirrt in dem, was Sie gesagt haben ... Ich habe die gleichen Probleme, ein Unterschied ist, dass ich in Windows 7 war

zufällige Idee, wie wäre es, die exe-Datei nicht zu ersetzen, wenn es nicht notwendig ist

Soweit ich verstanden habe, sind die exe-Dateien sehr kleine Trampoline, die normalerweise funktionieren

Die wichtigere Logik finden Sie in den zugehörigen Skriptdateien

@ pzz2011 Nun, eigentlich habe ich meinen Gewinn neu installiert und einen neuen Benutzernamen festgelegt. In meinem Fall war es dann einfacher herauszufinden, wie man es an allen Stellen und Routen ändert, an denen es erwähnt wird :)

@RonnyPfannschmidt Hängt davon ab, was zum Schreiben der .exe verwendet wird - setuptools, die zur Verwendung von foo.exe + foo-script.py (nicht sicher, was es jetzt tut), während distlib (falls konfiguriert) ein einzelnes foo.exe das das Skript eingebettet ist.

@grasx hhh ... Ich habe einen einfacheren Weg gefunden, es zu lösen. Ich installiere gerade die Python von 2.7.x auf 2.7.10 neu.
Dann lächelt mir der Erfolg ~

Verwenden Sie unter Windows die Eingabeaufforderungsfenster im Administratormodus. Geben Sie dann command ein
python -m pip install --upgrade pip

Ich hoffe es funktioniert bei dir. So habe ich es geschafft, ein Fenster 10 zu bearbeiten

Viel Glück.

@grasx Nicht ganz sicher warum, aber dieser Fehler tritt auf, wenn Sie im Python-Installationsprogramm unter Windows 8.1 und 10 "Für alle Benutzer installieren" auswählen. Führen Sie eine Neuinstallation durch, wählen Sie PATH und benutzerdefinierte Installation. Stellen Sie sicher, dass das obere Kontrollkästchen deaktiviert ist, und wählen Sie den Installationsort aus. Die Verwendung von "python -m pip install --upgrade pip" in cmd funktioniert danach einwandfrei.

Nur zu Ihrer Information, für Windows-Benutzer. Wenn Sie Cygwin installieren, wird Python2.7 automatisch installiert. Alles was Sie dann tun müssen, ist ausführen:

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

(Ja, Sie müssen zuerst wget installieren.)

image
Wie kann man dieses Problem lösen?

@ JingY0604
Unter So kopieren Sie Text aus einem Eingabeaufforderungsfenster finden Sie hier eine Erklärung zum Kopieren von Text. Auf diese Weise kann der von Ihnen veröffentlichte Text durchsucht werden.

Sie verwenden Pip Version 7.1.0, jedoch ist Version 9.0.1 verfügbar.
Sie sollten ein Upgrade über die Kommunikation 'python -m pip install --upgrade pip' in Betracht ziehen
und.
D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip_vendorrequ
ests \ packages \ urllib3 \ util \ ssl_.py: 90: InsecurePlatformWarning: Ein echter SSLContex
t Objekt ist nicht verfügbar. Dies verhindert, dass urllib3 SSL entsprechend konfiguriert
ely und kann dazu führen, dass bestimmte SSL-Verbindungen fehlschlagen. Weitere Informationen finden Sie unter htt
ps: //urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Pip sammeln
Herunterladen von pip-9.0.1-py2.py3-none-any.whl (1,3 MB)
Ausnahme:
Traceback (letzter Anruf zuletzt):
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip \ base
command.py ", Zeile 223, in main
status = self.run (Optionen, Argumente)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip \ comm
ands \ install.py ", Zeile 282, wird ausgeführt
request_set.prepare_files (Finder)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpipreq \
req_set.py ", Zeile 334, in prepare_files
functools.partial (self._prepare_file, finder))
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpipreq \
req_set.py ", Zeile 321, in _walk_req_to_install
more_reqs = handler (req_to_install)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpipreq \
req_set.py ", Zeile 491, in _prepare_file
session = self.session)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip \ down
load.py ", Zeile 825, in unpack_url
Session,
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip \ down
load.py ", Zeile 673, in unpack_http_url
from_path, content_type = _download_http_url (Link, Sitzung, temp_dir)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip \ down
load.py ", Zeile 886, in _download_http_url
_download_url (resp, link, content_file)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip \ down
load.py ", Zeile 621, in _download_url
für Chunk in progress_indicator (resp_read (4096), 4096):
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip \ util
s \ ui.py ", Zeile 135, in iter
self.next (n)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip_ven
dor \ progress__init __. py ", Zeile 73, in next
self.update ()
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip_ven
dor \ progress \ bar.py ", Zeile 82, in Aktualisierung
self.writeln (Zeile)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip_ven
dor \ progress \ helpers.py ", Zeile 69, in writeln
print (Zeile, Ende = '', Datei = Selbstdatei)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip_ven
dor \ colorama \ ansitowin32.py ", Zeile 133, schriftlich
self.write_and_convert (Text)
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip_ven
dor \ colorama \ ansitowin32.py ", Zeile 161, in write_and_convert
self.write_plain_text (Text, Cursor, len (Text))
Datei "D: \ Programme \ Python27 \ lib \ site-packagespip-7.1.0-py2.7.eggpip_ven
dor \ colorama \ ansitowin32.py ", Zeile 166, in write_plain_text
self.wrapped.write (Text [Start: Ende])
UnicodeEncodeError: Der Codec 'ascii' kann das Zeichen u '\ u258f' an Position 8 nicht codieren
: Ordnungszahl nicht im Bereich (128)

@ JingY0604 Siehe # 3463.

Sie können Ihre Pip aktualisieren, indem Sie die vorhandene Installation deinstallieren und die neuere Version mit get-pip.py installieren.

Für https://github.com/ofek/hatch fange ich einfach alle Instanzen der Selbstaktualisierung ab und verbiete sie. Ich habe dann ein explizites --self-Flag, damit Popens ein python -m pip install -U hatch öffnet und sofort beendet wird.

https://github.com/ofek/hatch/blob/22e621715fbed36c2bfab35ae9fa9649ea6dfe1e/hatch/cli.py#L509

edit: technisch gesehen wird statt nur python tatsächlich sys.executable verwendet

@ofek # 4490 hat eine Änderung in pip vorgenommen und eine bessere Nachricht gedruckt, IIRC.

Wenn ich Python ohne Pip installiert habe, kann ich das Pip-Modul in Zukunft nicht mehr installieren.

c:\Python27>python.exe get-pip.py ERROR: To modify pip, please run the following command: c:\Python27\python.exe -m pip

c:\Python27>c:\Python27\python.exe -m pip install c:\Python27\python.exe: No module named pip

Hey @ihormelnyk!

Das ist nicht der Fall. Die Bedingung dafür war zu weit gefasst - sie blockiert die Verwendung eines Skripts mit dem Wort "pip" daran, pip zu ändern. Sie können versuchen, get-pip.py so umzubenennen, dass es nicht das Wort "pip" enthält, um dieses Problem zu umgehen.

Eine Version 10.0.1 (die wahrscheinlich diese Woche erscheinen wird) wird dieses Problem beheben.

@ Pradyunsg danke für das Teilen des @ihormelnyk und das Umbenennen der Datei get-pip.py in einen Namen, der nicht das Wort pip half.

Ich drucke Pip in cmd-Fenstern, aber es zeigte sich
Schwerwiegender Fehler im Launcher: Prozess kann nicht mit '"" d: \ Programme (x86) python3.6python.exe "" D: \ Programme (x86) python3.6 \ Scriptspip.exe "" erstellt werden
Ich habe bereits eine Umgebung für pip festgelegt, aber es funktioniert nicht. Wie kann ich das herausfinden?

@ BJQ98 Du würdest dir # 5223 ansehen wollen.

Pradyunsg sagte, 10.0.1 würde dies beheben, aber ich weiß nicht wie. Vielen Dank.

C:\Users\clarkk\AppData\Local\Programs\Python\Python36>python -m pip install -U 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
  Found existing installation: pip 9.0.3
    Uninstalling pip-9.0.3:
      Successfully uninstalled pip-9.0.3
  Rolling back uninstall of pip
Exception:
Traceback (most recent call last):
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\commands\install.py", line 342, in run
    prefix=options.prefix_path,
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\req\req_set.py", line 784, in install
    **kwargs
  File "C:\Users\yangg\AppData\Roaming\Python\Python36\site-packages\pip\req\req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\req\req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\wheel.py", line 462, in move_wheel_files
    generated.extend(maker.make(spec))
  File "C:\Users\yangg\AppData\Roaming\Python\Python36\site-packages\pip\_vendor\distlib\scripts.py", line 372, in make
    self._make_script(entry, filenames, options=options)
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\_vendor\distlib\scripts.py", line 276, in _make_script
    self._write_script(scriptnames, shebang, script, filenames, ext)
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\_vendor\distlib\scripts.py", line 212, in _write_script
    launcher = self._get_launcher('t')
  File "C:\Users\clarkk\AppData\Roaming\Python\Python36\site-packages\pip\_vendor\distlib\scripts.py", line 351, in _get_launcher
    result = finder(distlib_package).find(name).bytes
AttributeError: 'NoneType' object has no attribute 'bytes'
You are using pip version 9.0.3, however version 10.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

Das ist das gleiche wie # 5343.

Dank pradyunsg erweist sich die Lösung eines anderen als einfacher. Ich habe gerade zuerst "python -m pip uninstall pip" und dann "python -m pip install -U pip" ausgeführt.

Anforderung bereits aktuell: pip in c: \ user \ clarkk \ appdata \ local \ Programme \ Python \ Python36 \ lib \ site-packages (10.0.1)

      Personally I think it should be windows only. I view it as a work around for the way the Windows platform works, and something that's a target to eventually remove for something nicer down the road.

Ich erhalte beim Ausführen des obigen Befehls einen Fehler, da der Syntaxfehler für das Wort "Get" die Lösung dafür sein könnte

@AProNoob Sie sollten die Befehle an einer Eingabeaufforderung (cmd oder Powershell) ausführen, nicht an einer Python-Eingabeaufforderung.

Vielen Dank! Das hat funktioniert!

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen keine aktuellen Aktivitäten stattgefunden haben. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen