Pip ist aus irgendeinem Grund verschwunden

pipwar in Ordnung, aber heute, als ich versuchte, es zu benutzen, bekam ich diese Meldung:

-bash: pip: command not found

Das ist seltsam. brewzeigt, dass das pythonPaket von brewimmer noch installiert ist, aber wenn Sie jetzt pythondas Terminal eingeben, wird stattdessen das Paket standardmäßig auf dem System ausgeführt:

~: brew install python
Warning: python 2.7.13_1 is already installed

~: python
Python 2.7.10 (default, Feb  7 2017, 00:08:15) 

Der Versuch, die Pakete zu importieren, die ich hatte, hat auch nicht funktioniert:

~: python
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cv2
>>> import PIL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PIL

Wenn ich in gehe /usr/local/lib/python2.7/site-packages/, scheint alles in Ordnung zu sein. Seltsamerweise funktioniert es auch, wenn ich tippe

~: pip2 -V
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
~: python2
Python 2.7.13 (default, Jul 18 2017, 09:17:00) 
>>> import cv2
>>>

Was kann ich tun, um pip(und meine Pakete) zurückzubekommen?

Python 2.7.10 ist das Python des Systems ( ~: python), Python 2.7.13 ist das mit brew installierte Python!
@klanomath Ja ich weiß. Ich weiß nicht, was passiert ist, aber früher konnte ich Brew's Python starten, indem ich einfach pythondas Terminal eintippte.
Was erhalten Sie, wenn Sie „Welcher Pip“ eingeben?
@john Ein Rückgabecode 1.

Antworten (3)

Nachdem ich die Diskussion darüber gelesen habe, warum diese Homebrew-Änderung stattgefunden hat, und einige der damit verbundenen Probleme, scheint es mir, dass die Verknüpfung mit "pip" und "python", wie Sie es in Ihrer Antwort getan haben, die Dinge in Zukunft verwirren könnte. Stattdessen folgte ich den Vorschlägen in diesen beiden GH-PRs (und es wird hier als die richtige Lösung bestätigt ).

Bearbeiten Sie ~/.bashrc so, dass es Folgendes enthält:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Ich verwende virtualenvwrapper und musste auch ~/.bash_profile bearbeiten , um eine ähnliche Zeile zu enthalten:

export VIRTUALENVWRAPPER_PYTHON=/usr/local/opt/python/libexec/bin/python
Ich musste es hinzufügen, weil Bash aus irgendeinem Grund ~/.bash_profilenicht verwendet wird .~/.bashrc

Ich bin mir ziemlich sicher, dass der Grund für die Änderung dieser Symlinks die in Version 1.3.0 angekündigten Homebrew-Updates waren :

„Die bedeutendste Änderung seit 1.2.0 ist, dass brew install python keine Python-Binärdatei mehr ohne manuelle PATH-Zusätze installiert und stattdessen eine python2-Binärdatei installiert. Dies vermeidet das standardmäßige Überschreiben der System-Python-Binärdatei, wenn Python als Abhängigkeit installiert wird. Es ebnet auch der Weg, Python schließlich zu Python 3.x zu machen."

Wenn Sie etwas tiefer eintauchen, wird diese Diskussion auf github.com/Homebrew/homebrew-core/pull/14408 angezeigt

Ich habe es gelöst, indem ich die Symlinks manuell wieder hinzugefügt habe:

cd /usr/local/bin
ln -s python2 python
ln -s pip2 pip

Allerdings weiß ich immer noch nicht, warum sie überhaupt verschwunden sind.