Cómo configurar virtualenvwrapper con python3 en OSX Mojave

how-to-configure-virtualenvwrapper-with-python3-in-osx-mojave

Si es un desarrollador que trabaja con python, debería usar VirtualEnv para administrar los requisitos de sus proyectos y Virtualenwrapper para facilitarle la vida con atajos útiles.

Virtualenvwrapper tiene una muy buena documentación y la instalación de python con Homebrew es sencilla, pero es increíble ver que en la computadora de cada desarrollador que ayudo, encuentro varios problemas con su instalación. Por lo tanto, la motivación de este artículo es proporcionar una guía definitiva para configurar su instalación de Python de una manera que evite problemas futuros en OSX.

Dado que estamos en 2018 (o después), también supongo que todos sus proyectos actuales funcionan con python3, ¿verdad? Por lo tanto, esta guía será completamente diferente a todo lo que lea en todas partes. Si la mayoría de sus proyectos son python2 y tiene algunos en python3, vaya a otro lugar.

Lo sé, no es su culpa, OSX Mojave todavía viene con python 2 por defecto 🙁 pero no debería tener nada que ver con su configuración de desarrollo, porque no debería usar las bibliotecas del sistema para el desarrollo … Deja el sistema solo.

¡Ni siquiera intente eliminar o actualizar el python2 predeterminado que viene con el sistema operativo! Cosas como sudo algo están prohibidas si no quiere romper cosas. No está en Windows, por lo que no debería necesitar modificar su sistema para configurar su entorno de desarrollo.

Instalación de Python3

Asumiré que solo tiene una copia nueva de su sistema operativo (¡no lo ha estropeado!), Ya ha instalado Homebrew para administrar sus dependencias del sistema y usted usa zsh como su shell.

Tengamos todo actualizado y verifiquemos que el sistema esté bien antes de comenzar:

brew update && brew upgrade
brew doctor

Usted debe leer algo como esto:

brew doctor
Your system is ready to brew.

Si recibe advertencias, le recomiendo que las repare antes de continuar con cualquier otra cosa. Si no tiene Homebrew configurado de la manera correcta, su vida podría ser complicada en los próximos pasos.

Como todo está bien, es hora de instalar python3:

brew install python

Instalará python3 de forma predeterminada, y obtendrá una confirmación como esta:

Python has been installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /usr/local/opt/python/libexec/bin

If you need Homebrew's Python 2.7 run
  brew install python@2

You can install Python packages with
  pip3 install <package>
They will install into the site-package directory
  /usr/local/lib/python3.7/site-packages

See: https://docs.brew.sh/Homebrew-and-Python
==> Summary
/usr/local/Cellar/python/3.7.1: 3,824 files, 59.2MB

En este momento, ha instalado python3, pero aún no es la python predeterminada en su entorno, si escribe python -V, seguirá obteniendo python 2.7, y solo obtendrá python3 si ejecuta explícitamente python3.

python -V
Python 2.7.10

python3 -V
Python 3.7.1

Puede seguir ejecutando python3 para todo cuando sea necesario, pero hace las cosas más complicadas en la futura configuración de virtualenvwrapper, por lo que vamos a configurar python3 como la versión predeterminada de python para usar en mi usuario. Para hacerlo, vamos a modificar la RUTA con las siguientes instrucciones:

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

Con esta instrucción, ha establecido la precedencia a su instalación de python3 sobre la instalación predeterminada de python, y puede verificarlo ejecutando:

python -V
Python 3.7.1
pip -V
pip 18.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

Para hacerlo permanente, edite el archivo .zshrc:

echo 'export PATH="/usr/local/opt/python/libexec/bin:/usr/local/sbin:$PATH"' >> ~/.zshrc

Instalación y configuración de Virtualenvwrapper

Una vez configurado esto, la instalación de virtualenvwrapper será mucho más fácil, y tal como se explica en la guía de instalación.

pip install virtualenv
pip install virtualenvwrapper

Ahora agréguelo al archivo de inicio de shell (.zshrc):

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

Ahora tendrá virtualenvwrapper listo, para que pueda crear entornos virtuales para sus proyectos de Python simplemente ejecutando mkvirtualenv ENVIRONMENT y cambiar a un entorno virtual específico utilizando workon ENVIRONMENT. Puede leer más sobre cómo usar virtualenvwrapper en la documentación oficial.

Bonus track: Python2

¿Necesita trabajar en un proyecto con python2? … OK, no es el fin del mundo. Guido van Rossum lo puede perdonar.

Las siguientes líneas se explican por sí mismas. Instale python2 y cuando necesite usar python2, configúrelo explícitamente:

brew install python2
mkvirtualenv py2 -p python2

¡Feliz codificación!