La forma correcta e incorrecta de configurar Python 3 en MacOS
he estado sumergiéndome de nuevo en el desarrollo de Python mientras me preparo para dirigirme a PyCon us. (Si te diriges allí también y quieres compartir tu historia de Python, házmelo saber! Cuando instalé un módulo para juguetear, recibí un recordatorio de que necesitaba instalar Python 3 pronto.
$ pip install todoist-python
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won"t be maintained after that date. A future version of pip will drop support for Python 2.7.
entonces, hice lo que cualquiera de nosotros haría y busqué en Google una guía para actualizar mi entorno de desarrollo, que se ejecuta en Mac (el sistema operativo macOS, anteriormente conocido como OS X)., Para mi sorpresa, solo encontré un puñado de publicaciones de StackOverflow, y me señalaron soluciones parciales. Aquí tienes la historia completa de cómo configurar su entorno sin romper nada integrado en el sistema operativo macOS.
1. Install pyenv
Moshe Zadka advierte que hacer esto mal podría resultar en una idea poco fiable de qué Python se está ejecutando que depende demasiado de los alias de carga de shells. Sabía que Moshe estaba familiarizado con Python, pero lo que no sabía es que es autor de muchos tutoriales de Python, así como de un próximo libro sobre Desarrollo de Python en macOS., Ayudó a 40 colegas a desarrollar Python de forma segura y consistente en sistemas macOS siguiendo un principio básico:
«la premisa básica de todo desarrollo de Python es nunca usar el sistema Python. No desea que el «Python predeterminado» de Mac OS X sea » python3.»Nunca querrás preocuparte por Python por defecto.»
¿Cómo dejamos de preocuparnos por el valor predeterminado? Moshe recomienda usar pyenv para administrar entornos Python (para una inmersión más profunda en la configuración de pyenv, consulte este artículo)., Esta herramienta maneja múltiples versiones de Python y se describe como » simple, discreta, y sigue la tradición Unix de herramientas de un solo propósito que hacen una cosa bien.»
mientras que otras opciones de instalación están disponibles, la forma más fácil de empezar es con Homebrew:
$ brew install pyenv
🍺 /usr/local/Cellar/pyenv/1.2.10: 634 files, 2.4MB
instalar Python
ahora vamos a instalar la última versión de Python (3.7.,3 en el momento de escribir esto):
Set your global default
ahora que Python 3 está instalado a través de pyenv, queremos establecerlo como nuestra versión global default para entornos pyenv:
$ pyenv global 3.7.3
# and verify it worked
$ pyenv version
3.7.3 (set by /Users/mbbroberg/.pyenv/version)
la potencia de pyenv proviene de su control sobre la ruta de acceso de nuestro shell. Para que funcione correctamente, necesitamos agregar lo siguiente a nuestro archivo de configuración (.zshrc para mí, posiblemente .bash_profile for you):
después de ese comando, nuestro dotfile (.zshrc para zsh or .,bash_profile for Bash) debe incluir estas líneas:
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
ahora sabemos con certeza que estamos usando Python 3.7.3 y pip se actualizará junto a él sin ningún aliasing manual entre versiones. Usar la recomendación de Moshe de usar un administrador de versiones (pyenv) nos permite aceptar fácilmente futuras actualizaciones sin confundirnos sobre qué Python estamos ejecutando en un momento dado.
Success
a medida que se sienta cómodo con este flujo de trabajo, puede usar pyenv para administrar varias versiones de Python. También es esencial, para la gestión de dependencias, utilizar entornos virtuales., Menciono cómo usar la biblioteca venv incorporada en el artículo, y Moshe recomienda virtualenvwrapper para administrar entornos virtuales.
entendiendo los tiempos de ejecución de Python
ahora que tiene sus versiones de Python arregladas, es Seguro explorar por qué este problema confunde a tanta gente.
la versión de Python que viene con macOS está muy desactualizada de lo que Python recomienda usar para el desarrollo. Ponderar los tiempos de ejecución de Python puede ser cómicamente desafiante a veces, como lo señala XKCD.,
muchos usuarios ya tienen docenas de intérpretes de Python en su computadora, pero no tienen idea de cómo administrarlos de manera efectiva. Con demasiada frecuencia, las personas simplemente descargan la última versión de Python, La mueven a su ruta y la llaman un día (o usan brew install python3, lo que haría algo similar). Esto puede causar roturas en el futuro de maneras frustrantes que pueden ser difíciles de solucionar.,
qué no hacer
Mi primera idea sobre cómo hacer de Python 3 El Python predeterminado en mi sistema fue mover la versión anterior y agregar la nueva:
el patrón siguió lo que /usr/bin/ suele hacer entre las versiones principales de Python, pero rápidamente aprendí que era un movimiento equivocado:
$ sudo mv /usr/bin/python /usr/bin/python2
mv: rename /usr/bin/python to /usr/bin/python2: Operation not permitted
afortunadamente, macOS me protegió de romper algo que no entiende. Más investigaciones demuestran que esto es exactamente lo que no deberíamos hacer.
otra cosa que no intentar
ahora que sabemos lo que no debemos hacer, veamos lo que podríamos hacer., Hay un par de opciones cuando pensamos en patrones de instalación comunes para aplicaciones en macOS.
Use Python 3 como el predeterminado de macOS
el sitio web de Python tiene un instalador de macOS Python 3 que podemos descargar y usar. Si usamos la instalación del paquete, un relleno python3 estará disponible en / usr / local / bin/.
Aliasing es una necesidad ya que el binario de Python almacenado en /usr/bin/ no se puede cambiar. Lo bueno de un alias es que es específico de nuestro shell de línea de comandos. Puesto que uso zsh por defecto, pongo lo siguiente en el .,zshrc file:
Si está utilizando el shell bash predeterminado, puede agregar este mismo texto a su .bashrc:
esta estrategia funciona, pero no es ideal para realizar futuras actualizaciones de Python. Significa que tenemos que recordar revisar el sitio web y descargar los nuevos archivos ya que Python no incluye una forma de actualización de línea de comandos.
Haz que Homebrew administre Python 3
El Proyecto Homebrew proporciona un administrador de paquetes gratuito y de código abierto para macOS en el que muchas personas confían. Da a los usuarios de Apple una potencia similar a apt-get o yum., Si usted es un usuario de Homebrew, es posible que ya tenga instalado Python. Para comprobarlo rápidamente, ejecute:
$ brew list | grep python
python
Si Python aparece bajo el comando, está instalado. ¿Qué versión es? Vamos a comprobar:
bien, genial! Los mantenedores de Homebrew han actualizado la botella predeterminada de Python para apuntar a la última versión., Dado que los mantenedores de Homebrew son más confiables en la actualización de la versión que la mayoría de nosotros, podemos usar la versión de homebrew de Python 3 con el siguiente comando:
ahora queremos apuntar nuestro alias (desde arriba) a la copia de Python que administra Homebrew:
# If you added the previous alias, use a text editor to update the line to the following
alias python=/usr/local/bin/python3
para asegurarnos de que la ruta anterior apunta a donde homebrew instaló Python en nuestro entorno, podemos ejecutar Brew info Python y buscar la información de la ruta.,
este método, de usar Homebrew para administrar nuestro entorno Python, es un buen punto de partida, y tenía sentido para mí en ese momento.
¿y si todavía necesitamos Python 2?
tiene sentido que cualquier persona nueva en Python comience con Python 3., Pero aquellos de nosotros que todavía necesitamos Python 2—por ejemplo, para contribuir a un proyecto de Python que solo está disponible en Python 2—podemos seguir utilizando el binario predeterminado de Python de macOS disponible en /usr/bin/python:
$ /usr/bin/python
>>> print("This runtime still works!")
This runtime still works!
Homebrew es tan maravilloso, que incluso ofrece una fórmula diferente para Python 2:
# If you need Homebrew"s Python 2.7 run
$ brew install python@2
en cualquier tiempo, podemos eliminar los alias del archivo de configuración de nuestra Shell para volver a usar la copia predeterminada de Python en el sistema.
¡no te olvides de actualizar pip a pip3!,
el comando pip es el administrador de paquetes predeterminado específicamente para paquetes Python. Aunque cambiamos nuestro comando predeterminado de Python para que sea la versión 3, tenemos que alias nuestro comando pip por separado si está en la versión anterior. Primero, necesitamos comprobar en qué versión estamos:
para asegurarnos de » volver a instalar paquetes compatibles con nuestra nueva versión de Python, usaremos otro alias para apuntar a la versión compatible de pip. Dado que estamos usando Homebrew como nuestro gestor de paquetes en esta situación, sabemos que instaló pip3 cuando instalamos Python 3., La ruta predeterminada debe ser la misma que Python 3, pero podemos confirmarlo pidiendo al shell que la encuentre:
$ which pip3
/usr/local/bin/pip3
ahora que conocemos la ubicación, la agregaremos a nuestro archivo de configuración del shell, como hicimos antes:
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
# or for Bash
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
Por último, podemos confirmar que ejecutar pip apunta a pip3 abriendo un nuevo shell o restableciendo nuestro shell actual y viendo a lo que apuntamos:
# This command reloads the current shell without exiting the session
# Alternatively, exit the shell and start a new one
$ exec $0
# Now we can look to see where pip points us
$ which pip
pip: aliased to /usr/local/bin/pip3
podemos evitar usar homebrew para actualizar pip, pero eso requiere un tutorial mucho más largo de la documentación de Python.,
hazlo desde el principio
si acabas de empezar con el desarrollo de Python en un macOS, haz las configuraciones necesarias para asegurarte de que estás usando la versión correcta de Python desde el principio. Instalar Python 3, con o sin Homebrew, y usar alias te permitirá empezar a codificar, pero no es una buena estrategia a largo plazo. Uso de pyenv como una solución simple de gestión de versiones para tener un buen comienzo.
Este artículo fue publicado originalmente en mayo de 2019 y ha sido actualizado por el editor.