pip funktioniert nicht bei der Installation von Hombrew Python 2.7

15

Ich habe Python mit Homebrew installiert und kann Pip nicht aus der Bash aufrufen. Ich habe versucht, mein .bash_profile so zu ändern, dass es / usr / local / bin / python und / usr local / share / python ohne Erfolg enthält.

Wenn ich den Bash-Befehl verwende:

find / -name 'pip'

Die einzigen Ergebnisse, die ich bekomme, sind:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip

Keine davon ist eine ausführbare Datei.

Ich weiß nicht wirklich, wohin ich meinen $ PATH zeigen soll, da ich die ausführbare Pip-Datei nicht finden kann. Wenn ich öffne

/usr/local/lib/python2.7/site-packages/pip

oder

/usr/local/Cellar/python/2.7.9/libexec/pip/pip

Ich finde folgende Dateien:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models

Keine davon ist eine ausführbare Datei.

Ich würde mich über die Hilfe von jemandem freuen, der mehr Erfahrung als ich hat.

Edit: Ich habe die von Marco vorgeschlagenen Schritte ausprobiert:

Hier sind die Ergebnisse zu den Schritten:

  1. echo $ PATH zeigt einige Verzeichnisse: / usr / local / bin: / usr / local / mysql / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / texbin: / opt / X11 / bin: / usr / local / mysql / bin

  2. welches -a Python zurückgibt: / usr / local / bin / python / usr / local / bin / python

es wird nichts zurückgegeben, wofür -a pip

  1. Welches Python zurückgibt: / usr / local / bin / python

Für welchen Pip wird nichts zurückgegeben

  1. ls -l $ (welches Python) gibt ein einzelnes Verzeichnis zurück: lrwxr-xr-x 1 Ivan admin 33 17. Mai 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ Python

ls -l $ (welcher pip) gibt mehrere zurück, einschließlich der Python-Dateien, die ich in meinem ursprünglichen Beitrag gezeigt habe

YoungPadawan
quelle

Antworten:

19

In der Regel homebrewwird ein formulain installiert /usr/local/Cellar/formulaund dann ein Link auf gelegt /usr/local/bin/formula.

Um Ihre installierten Formeln zu verwenden, vergewissern Sie /usr/local/binsich , dass in Ihrer $PATH. Zeigen Sie Ihre $PATHdurch Eingabe

echo $PATH

Wenn dies /usr/local/binnicht in Ihrer Liste enthalten ist $PATH, setzen Sie diese Zeile an das Ende Ihrer ~/.profileDatei.

export PATH="/usr/local/bin:$PATH"

Überprüfen Sie nun, was pythonsauf Ihrem OSX zu finden ist, indem Sie Folgendes eingeben:

which -a python

Es sollte einen Python geben, der sich in /usr/bin/(dem Apple-Python) befindet, und einen, bei /usr/local/bin/dem es sich um den Homebrew-Python handelt.

which python

zeigt Ihnen, welche Python zuerst in Ihrer gefunden wird $PATH und wird ausgeführt, wenn Sie aufrufen python.

Wenn Sie wissen möchten, wo sich die ausführbare Datei befindet, geben Sie Folgendes ein

ls -l $(which python)

Dies könnte so aussehen: lrwxr-xr-x 1 Wurzelrad 68 7. Mai 13:22 Python -> / usr / local / bin / Python

Dies wird auch funktionieren pip.

Wenn Sie die Ergebnisse dieser Schritte anzeigen, können wir Ihnen wahrscheinlich viel einfacher helfen.

- UPDATE -

Sie haben /usr/local/bin/pythonmit verknüpft /usr/local/Cellar/python/2.7.9/bin/python. -> hat brew install pythonfunktioniert.

zeige, ob pipdurch Tippen installiert wird

brew list python | grep pip

Das solltest du sehen

/usr/local/Cellar/python/2.7.9/bin/pip

Wenn nicht, überprüfen Sie, ob es Links gibt, die nicht mit gemacht werden brew install. Hab dir so etwas gesagt:

"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"

So erzwingen Sie die Verknüpfung und überschreiben alle in Konflikt stehenden Dateien:

brew link --overwrite python

So listen Sie alle zu löschenden Dateien auf:

brew link --overwrite --dry-run python

** KEIN Standardapfel /usr/bin/python**

Link von /usr/local/Cellar/python/2.7.9/bin/pythonnach/usr/bin/python

ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python

Dies ist für alle Python-Skripte erforderlich, die mit beginnen #!/usr/bin/python. Insbesondere easy_installwird fehlschlagen, wenn der Link nicht vorhanden ist.

Jetzt kannst du rennen

easy_install pip

Hoffe, du machst Fortschritte

Marco M. von Hagen
quelle
Marco, danke für deine Antwort! Bitte beachten Sie meine ursprüngliche Frage für die Ergebnisse zu den Schritten - Ich habe hinzugefügt , um sie in
YoungPadawan
@YoungPadawan sieht so aus, als hättest du keinen Apple-Standard /usr/bin/python. Dies ist nicht gut, da viele Python-Skripte mit beginnen #!/usr/bin/python. Wenn es kein Python gibt, erhalten Sie Fehlermeldungen wie die Ihren. Verwenden Sie brew link --dry-run python, um zu überprüfen, was bei der Verwendung an Ihren Links geändert wird brew link --overwrite python. Wir bringen deine Pfeife zum Laufen ;-)
Marco M. von Hagen
Verwenden brew link --overwrite --dry-run pythonSie, um zu sehen, welche Dateien überschrieben werden.
Marco M. von Hagen,
1
Ich habe Ihre Antwort angekreuzt, weil sie mich auf den richtigen Weg geführt hat, aber am Ende war es eine Erlaubnisfrage. Nach der Installation bekam ich einen Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the Postinstall-Python-Befehl, der mich zu ein paar Dateien führte, auf die ich keinen Zugriff hatte. Jetzt kann ich pip benutzen!
Nochmals vielen
1
In meinem Fall lag das Problem The post-install step did not complete successfullyan error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. Das manuelle Löschen dieser Datei und das brew postinstall pythonerneute Ausführen haben das Problem behoben.
David Pursehouse
5

Wenn brew Ihre Python-Installation verwaltet und pip nicht mehr mit Symlinks verbunden ist (dh Sie geben "which pip" ein und erhalten keine Ergebnisse), versuchen Sie dies in Ihrem Home-Verzeichnis:

brew unlink python && brew link python

Ich bin mir nicht sicher, ob die alte Methode noch funktioniert (auf meinem Computer nicht).

Bestätigen Sie nun, dass es tatsächlich auf Ihre 2.7-Installation mit verweist pip --version(es wird die Python-Hauptversion in der Verzeichnisausgabe auflisten).

GrayedFox
quelle
4

Keine wirkliche Antwort auf die ursprüngliche Frage, aber wenn jemand hier landet, weil sein Homebrew- System python/pipnicht mehr funktioniert (dh pythonauf das Python-System verweist und pipnicht gefunden wird), könnte dies an einer kürzlichen Änderung (Sommer 2017) in der liegen So installiert und verknüpft Homebrew Python.

Die Lösung besteht darin, Folgendes hinzuzufügen ~/.bash_profileund / oder ~/.zshrc:

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"

Dies wird pythonauf die Brew-Version von Python verweisen und Ihnen auch geben pip. Weitere Informationen finden Sie im Abschnitt zu Vorsichtsmaßnahmen unter brew info pythonund https://github.com/Homebrew/homebrew-core/issues/15746

Bjorgvin
quelle
2

Standardmäßig bietet Homebrew Pip über: brew install python. Wenn Sie jedoch zwei Pythons auf Ihrem Mac installiert haben, können Sie diese alternativ über Folgendes installieren:

sudo easy_install pip

Um zu überprüfen, welche Dateien mit Ihrem Python-Paket installiert wurden, versuchen Sie Folgendes:

$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...

welches bestehen sollte pip.

Nach der Installation sollten Sie die installierten Dateien Ihrer Formel folgendermaßen verknüpfen:

brew link python

welche die richtigen symbolischen Verknüpfungen erstellen sollen (wie z /usr/local/bin/pip auf Ihre Cellar/python/2.?.?/bin/pip)

Wenn Sie ein Berechtigungsproblem haben, können Sie es folgendermaßen beheben:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

und stellen Sie sicher, dass sich Ihr Benutzer in der Administratorgruppe befindet (id -Gn $USER ) befindet.

Verwenden Sie nach dem Korrigieren der Berechtigungen nicht sudo wenn Sie den brewBefehl verwenden.

Dann verknüpfe es erneut:

brew unlink python && brew link python

Zum Testen des Testlaufs trennen und ausführen: brew link -n python die brewVerknüpfung Verknüpfungen von Dateien , die verknüpft würden.

Stellen Sie nach erfolgreicher Verknüpfung sicher, dass Ihre PATH-Systemvariable /usr/localFolgendes enthält:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

zu deinem ~/.bashrc Datei.

Wenn Sie erfolgreich sind, pipsollten Sie jetzt arbeiten.

Kenorb
quelle
Danke für deine Antwort kenorb! Ein Teil des Problems ist, dass easy_install auch bei mir nicht funktioniert. In der Bash bekomme ich: -bash: / usr / bin / easy_install: / usr / bin / python: bad interpreter: Keine solche Datei oder Verzeichnis
YoungPadawan
Das bedeutet, dass Sie nicht /usr/bin/pythoninstalliert haben (was normalerweise mit OS X bereitgestellt werden sollte). Versuchen Sie es also wie vorgeschlagen: brew install python && brew link pythonund fügen /usr/local/binSie es dann zu Ihrem hinzu PATH.
Kenorb
Ich glaube nicht, dass brew install python && brew link pythondas Python einbringt /usr/bin. Ich sehe es in usr/local/bin, aber ich sehe nicht den Symlink, um dort zu pip. Ich habe auch Python getrennt und verknüpft, und es ändert sich nichts. Es
sieht
@YoungPadawan brewmacht nichts mit /usr/bin, aber /usr/local/bin. Versuchen Sie: brew unlink pythonund Probelauf: brew link -n pythonalle Dateien aufzulisten, die verlinkt werden sollen, und zu prüfen, ob sie pipvorhanden sind. Wenn ja, ohne erneut ausführen -n.
Kenorb
Danke Kenorb, ich habe eine Lösung gefunden. Am Ende war es eine fehlerhafte Installation aufgrund von Berechtigungen. Ich habe die Berechtigungen für einige Dateien geändert, bei denen ein Konflikt aufgetreten ist, und die Installation erneut ausgeführt. Jetzt funktioniert alles einwandfrei. In einem Kommentar zu der obigen Frage finden Sie weitere Details. Nochmals vielen Dank für Ihre Antwort, es war sehr hilfreich, um mich zur Lösung zu bringen.
YoungPadawan