pip no funciona en la instalación de hombrew python 2.7

15

He instalado python usando homebrew y no puedo invocar pip desde bash. He intentado enmendar mi .bash_profile para incluir / usr / local / bin / python y / usr local / share / python en vano.

Cuando uso el comando bash:

find / -name 'pip'

Los únicos resultados que obtengo son:

/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

Ninguno de los cuales es un ejecutable.

Realmente no sé dónde apuntar mi $ PATH ya que no puedo encontrar el pip ejecutable. Cuando abro

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

o

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

Encuentro los siguientes archivos:

__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

Ninguno de los cuales es un ejecutable.

Agradecería la ayuda de cualquier persona con más experiencia que yo.

Editar: probé los pasos sugeridos por Marco:

Aquí están los resultados de los pasos:

  1. echo $ PATH muestra algunos directorios: / 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. que -a devuelve python: / usr / local / bin / python / usr / local / bin / python

no se devuelve nada por lo cual -a pip

  1. qué python devuelve: / usr / local / bin / python

no se devuelve nada por lo que pip

  1. ls -l $ (que python) devuelve un único directorio: lrwxr-xr-x 1 Ivan admin 33 17 may 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ pitón

ls -l $ (que pip) devuelve varios, incluidos los archivos de python que mostré en mi publicación original

YoungPadawan
fuente

Respuestas:

19

En general, homebrewse instalará una formulaen /usr/local/Cellar/formulay luego colocar un enlace a /usr/local/bin/formula.

Para hacer uso de sus fórmulas instaladas, asegúrese de que /usr/local/binesté en su $PATH. Muestra tu $PATHescribiendo

echo $PATH

Si /usr/local/binno está en su $PATH, ponga esta línea al final de su ~/.profilearchivo.

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

Ahora, verifique lo que pythonsse encuentra en su OSX escribiendo:

which -a python

Debe haber una pitón en /usr/bin/(la pitón de Apple) y una en la /usr/local/bin/que se encuentra la pitón Homebrew.

which python

le mostrará qué python se encuentra primero en su $PATH y se ejecutará cuando invoque python.

Si quieres saber dónde está el ejecutable, muéstralo escribiendo

ls -l $(which python)

Esto podría verse así: lrwxr-xr-x 1 rueda raíz 68 7 Mai 13:22 python -> / usr / local / bin / python

Esto también funcionará pip.

Si muestra los resultados de estos pasos, probablemente podamos ayudarlo mucho más fácilmente.

- ACTUALIZACIÓN -

Te has /usr/local/bin/pythonvinculado a /usr/local/Cellar/python/2.7.9/bin/python. -> brew install pythontrabajado.

mostrar, si pipse instala escribiendo

brew list python | grep pip

Debería ver

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

Si no, cheque, si hay enlaces, que no era hecho con brew install. Te dije algo como esto:

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

Para forzar el enlace y sobrescribir todos los archivos en conflicto:

brew link --overwrite python

Para enumerar todos los archivos que se eliminarán:

brew link --overwrite --dry-run python

** NO Apple estándar /usr/bin/python**

enlace de /usr/local/Cellar/python/2.7.9/bin/pythona/usr/bin/python

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

Esto es necesario para todos los scripts de Python que comienzan con #!/usr/bin/python. Especialmente easy_installfallará, si el enlace no está allí.

Ahora puedes correr

easy_install pip

Espero que estés progresando

Marco M. von Hagen
fuente
Marco, gracias por tu respuesta! Por favor, ver a mi pregunta original de los resultados a los pasos - Los he añadido en
YoungPadawan
@YoungPadawan parece que no tienes el estándar de Apple /usr/bin/python. Esto no es bueno, porque muchos scripts Python comienzan con #!/usr/bin/python. Si no hay python, recibirá mensajes de error como el suyo. Use brew link --dry-run pythonpara verificar qué cambiará a sus enlaces cuando lo use brew link --overwrite python. Obtendremos su pip correr ;-)
Marco M. von Hagen
use brew link --overwrite --dry-run pythonpara ver qué archivos se sobrescribirán.
Marco M. von Hagen
1
Marqué su respuesta porque me llevó por el camino correcto, pero al final fue un problema de permiso. Después de la instalación, recibí un Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the comando brew postinstall python` y me llevó a unos pocos archivos a los que no tenía acceso, a los que me di cuenta. Ahora puedo usar pip! Gracias de nuevo
YoungPadawan
1
En mi caso el problema se The post-install step did not complete successfullydebió a error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. Eliminar manualmente ese archivo y luego ejecutarlo brew postinstall pythonnuevamente lo reparó.
David Pursehouse
5

Si brew está administrando su instalación de python y pip ya no está enlazado (es decir, escribe "which pip" y no obtiene resultados) intente esto desde su directorio de inicio:

brew unlink python && brew link python

No estoy seguro si el método anterior funciona más (no funcionó en mi máquina).

Ahora confirme que realmente apunta a su instalación 2.7 con pip --version(enumerará la versión principal de Python en la salida del directorio).

GrayedFox
fuente
4

Realmente no es una respuesta a la pregunta original, pero si alguien termina aquí porque su Homebrew instalado python/pipya no funciona (es decir, pythonapunta al sistema python y pipno se encuentra), entonces la razón podría ser un cambio reciente (verano de 2017) en el manera Homebrew instala y vincula python.

La solución es agregar lo siguiente a ~/.bash_profiley / o ~/.zshrc:

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

Esto hará que pythonapunte a la versión de preparación de python y también le dará pip. Consulte la sección de advertencias en brew info pythony https://github.com/Homebrew/homebrew-core/issues/15746 para obtener más información.

bjorgvin
fuente
2

Por defecto Homebrew ofrece PIP a través de: brew install python. Sin embargo, entonces tendrá dos Pythons instalados en su Mac, alternativamente puede instalarlo a través de:

sudo easy_install pip

Para verificar qué archivos están instalados con su paquete Python, intente:

$ 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
...

que debe consistir pip.

Después de la instalación, debe vincular los archivos instalados de su fórmula mediante:

brew link python

que debería crear los enlaces simbólicos correctos (como /usr/local/bin/pipapuntar a su Cellar/python/2.?.?/bin/pip)

Si tiene un problema de permiso, puede solucionarlo de la siguiente manera:

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

y asegúrese de que su usuario esté en el grupo de administración ( id -Gn $USER).

Después de arreglar los permisos, no use sudo cuando use el brewcomando.

Luego vuelva a vincularlo nuevamente:

brew unlink python && brew link python

Para probar la ejecución en seco, desvincular y ejecutar: brew link -n python para ver los enlaces de los archivos que brewse vincularían.

Después de que el enlace sea exitoso, asegúrese de que su variable de sistema PATH tenga /usr/local , si no, agregue:

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

para usted ~/.bashrc archivo

Si tiene éxito, pipdebería funcionar ahora.

kenorb
fuente
Gracias por tu respuesta kenorb! Parte del problema es que easy_install tampoco funciona para mí. En el bash obtengo: -bash: / usr / bin / easy_install: / usr / bin / python: bad interpreter: No such file or directory
YoungPadawan
Eso significa que no tiene /usr/bin/pythoninstalado (que normalmente debería proporcionarse con OS X). Por lo tanto, intente como se sugiere, que es:, brew install python && brew link pythonluego agregue /usr/local/bina su PATH.
kenorb
No creo que eso brew install python && brew link pythonesté poniendo a Python /usr/bin. Lo estoy viendo usr/local/bin, pero no estoy viendo el enlace simbólico que hay allí. También he desvinculado y vinculado Python, y nada cambia. Parece que el brew install and link no está poniendo las cosas donde debería
YoungPadawan
@YoungPadawan brewno hace nada con /usr/bin, pero /usr/local/bin. Pruebe: brew unlink pythony ejecutar en seco: brew link -n pythonpara enumerar todos los archivos que deben estar vinculados y verificar si pipestá allí. Si es así, corre de nuevo sin -n.
kenorb
Gracias Kenorb, he encontrado una solución. Al final fue una instalación defectuosa debido a los permisos. Modifiqué los permisos en algunos archivos con los que la preparación estaba en conflicto y volví a ejecutar la instalación y ahora todo funciona bien. Hay más detalles en un comentario a la pregunta anterior. Gracias nuevamente por su respuesta, fue realmente útil para llevarme a la solución.
YoungPadawan