Wenn ich den Befehl pip ausführe, erhalte ich eine Fehlermeldung wie "pkg_resources.DistributionNotFound: pip == 1.5.4" und kann nichts tun.
pip install --upgrade pip
ausBrew Install Python
==> Caveats
Setuptools and Pip have been installed. To update them
pip install --upgrade setuptools
pip install --upgrade pip
Wenn ich den Pip jedoch auf diese Weise aktualisiere, funktioniert der Pip nicht.
Der Pip wurde aktualisiert, aber / usr / local / bin / pip
ist immer noch veraltet.
Sie können pip mit python -m pip
starten. Löschen Sie / usr / local / bin / pip
$ rm /usr/local/bin/pip /usr/local/bin/pip2 /usr/local/bin/pip2.7
$ python -m pip install --upgrade --force-reinstall pip
Oder
$ python -m pip install --upgrade --force-reinstall pip --no-use-wheel
Machen. Wenn Sie die letztere Methode verwenden, sollten Sie Ihre Pip- oder Setuptools in Zukunft aktualisieren
$ pip install --upgrade --no-use-wheel pip setuptools
müssen es tun.
Dies ist ein Kompatibilitätsproblem zwischen Homebrew und Rad.
Homebrew verwendet bei der Installation von Python pip und setuptools
/usr/local/Cellar/python/<version>/
Installieren Sie es darunter und installieren Sie den Symlink zum Befehl pip usw. in `/ usr / local / bin /`
.
Schreiben Sie dann die Einstellung prefix = / usr / local
in distutils.cfg
, und das Paket, das normalerweise von pip install
usw. installiert wird, ist ein Skript unter/ usr / local / bin /
,/ usr Stellen Sie sicher, dass die Bibliothek unter / local / lib / pytthon2.7 /
installiert ist.
Wenn ich in diesem Zustand "pip install --upgrade pip" mache, möchte ich das Skript "/ usr / local / bin / pip" installieren, aber es gibt bereits einen Symlink, den Homebrew nicht erkennt. ..
Das Verhalten, wenn sich Symlink bereits an der Stelle befindet, an der Sie das Skript installieren möchten, unterscheidet sich jedoch zwischen der Installation von Rad und der Installation von Tar.gz. Im Fall von Rad kann es nicht installiert werden und es wird übersprungen, und im Fall von Tar.gz Schreibt das Link-Ziel von symlink (dh den Inhalt von Cellar) neu.
Moderne Pips verwenden standardmäßig das Rad, wodurch Symlinks für Skripte verbleiben, die versuchen, ältere Versionen von Pips unter Cellar zu verwenden, sodass sie nicht mehr gestartet werden können.
Ich finde es nicht gut, dass das Verhalten bei der Verwendung von Wheel und bei Nichtverwendung anders ist, aber da es beim Überschreiben des extern erstellten Symlinks keine richtige Antwort gibt, ist Homebrew pip install- Wenn Sie -upgrade pip
zulassen, sollten Sie pip von Anfang an normal installieren.
Ich habe eine Pull-Anfrage ausgegeben, die Pip und Setuptools repariert, um die Installation in Cellar zu beenden. https://github.com/Homebrew/homebrew/pull/29926
Die oben genannte PR wurde abgelehnt, weil sie nicht der Grundrichtlinie von Homebrew entsprach. Auf die gleiche Weise wie bei der Installation mit Wheel, wie im Fall der Nichtverwendung von Wheel, ist PR die Änderung zum Überschreiben (Verbindungsziel), auch wenn die symbolische Verknüpfung bereits mit dem Installationsziel des Skripts übereinstimmt, PR für die Pip-Seite und früher Es wurde gefangen genommen.
Sobald der nächste Pip (1.6.0) veröffentlicht und mit Homebrews Python gebündelt ist, sollten Sie in der Lage sein, ein normales Upgrade mit "pip install --upgrade pip" von der nächsten Version durchzuführen.
Das heißt, es gibt zwei Pips innerhalb und außerhalb des Celler, und das Skript im Inneren wird bei der Installation außerhalb neu geschrieben, was alles andere als intelligent ist. Sofern Sie keine besonderen Probleme haben, empfehlen wir, dass Sie Ihr Pip nicht aktualisieren und auf das Update von Homebrew warten.
Starke Python-Entwickler ziehen es möglicherweise vor, ihre eigenen mit MacPorts oder pyenv zu erstellen, anstatt Homebrew, das durch seine eigene Methode erzwungen wird.
pip install --upgrade pip
wurde behoben, aber pip install --user ipython
usw. funktioniert immer noch nicht und ich weiß nicht, welche anderen Nebenwirkungen es beim Verpacken gibt.
Recommended Posts