python: terminal de macOS que ignora / etc / caminos para / usr / local / bin

2

Estoy tratando de instalar Homebrew con Python en una instalación limpia de macOS High Sierra. Homebrew instalado con éxito, al igual que pitón, pip, etc en la carpeta / usr / local / bin y he editado el /etc/pathstener /usr/local/binen la parte superior antes /usr/binpero el terminal sigue mostrando /usr/binque la versión de Python cuando se utiliza which python. He intentado reiniciar el terminal y el sistema.

La misma configuración funcionaba bien antes de reinstalar el sistema operativo.

/etc/paths Se ve como esto

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

EDITAR: echo $PATHmuestra /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbinpero which pythonaún muestra/usr/bin/python

jskrwyk
fuente

Respuestas:

1

No /etc/pathses recomendable ni necesario modificar las rutas de acceso del sistema (in ).

Si ha instalado Python a través de Homebrew ( brew install pythony brew install python3), debe leer las advertencias cuidadosamente:

brew info python
brew info python3

¿Por qué el manejo de Homebrew es pythontan especial?

Consulte la documentación de Homebrew y Python , ya que Homebrew crea bastantes enlaces simbólicos en diferentes lugares y utiliza la siguiente convención:

Homebrew proporciona una fórmula para Python 2.7.xy otra para Python 3.x. Los ejecutables están organizados de la siguiente manera para que Python 2 y Python 3 puedan instalarse sin conflictos:

  • pythonapunta al sistema MacOS Python (sin PATHmodificación manual )
  • python2 apunta a Python 2.7.x de Homebrew (si está instalado)
  • python3 apunta a Python 3.x de Homebrew (si está instalado)
  • pip2apunta a Python 2.7.x de Homebrew pip(si está instalado)
  • pip3apunta a Python 3.x de Homebrew pip(si está instalado)

La razón de esto es que no desea pythonusar el valor predeterminado de Homebrew Python si se instaló como una dependencia de alguna otra fórmula, lo que podría causar problemas en los scripts que simplemente se usan /usr/bin/env pythonen su línea shebang.

También tenga en cuenta que este comportamiento de Homebrew / Python puede cambiar en algún momento en el futuro, debido a la naturaleza heredada de Python 2.

¡Pero quiero pythonseñalar a Homebrew's python!

Entonces, si realmente desea hacer pythonreferencia a Python 2.7 de Homebrew en lugar de Python de su sistema, debe agregarlo a su $PATHen ~/.bash_profile:

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

... y deja tu /etc/pathscomo estaban antes.

slhck
fuente
Lo haré de esa manera. Todavía tengo curiosidad por qué no funciona la edición, /etc/pathsya que así es como se configuró antes de la reinstalación del sistema y todavía tengo un MacBook Pro (que también ejecuta High Sierra aunque con una actualización de Sierra en lugar de reinstalar) que lo tiene configurado con La /etc/pathsedición.
jskrwyk
1
Hm. Para ser honesto, no sé por qué no funcionaría. ¿Estás seguro de que hay un pythonadentro /usr/local/bin? ¿Qué which -a pythonmuestra?
slhck
Ah tienes razon. No es una pythonde /usr/local/binsolamente una python2, python2.7. Presumiblemente, los sistemas antiguos se configuraron con una versión anterior de HomeBrew cuando pythonse creó una /usr/local/bin. Curiosamente, aunque no hay un python3o tiene que instalarse por separado con HomeBrew? Pensé que llegaron bundle junto conbrew install python
jskrwyk
1
No, tienes que hacer brew install python3para conseguirlo.
slhck