Virtual Environments - Python - Mac OSX

by MGonzalez506 in Teachers > 9

1536 Views, 0 Favorites, 0 Comments

Virtual Environments - Python - Mac OSX

Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.001.jpeg
Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.002.jpeg

Este es un tutorial pequeño de cómo configurar Python Virtual Environments en MAC OSx.

Un ambiente virtual permite desarrollar un proyecto o múltiples proyectos a la vez, instalando las librerías y dependencias en un ambiente "controlado".

En otras palabras si se tiene un proyecto que debe correr con una versión de librerías diferente a otro, en caso de no utilizar ambientes virtuales, habría un conflicto entre las librerías de uno de los proyectos y el otro, por ser de versiones diferentes.


Sin embargo con Virtual Environments no se tiene este problema. A continuación una serie de ejemplos que pueden suceder:

PROYECTO #1

  • Utiliza la librería X versión 1.0
  • Por lo tanto se crea un ambiente virtual de Python donde se instalará esa librería X versión 1.0

PROYECTO #2

  • Utiliza la librería X versión 1.2
  • Por lo tanto se crea un ambiente virtual de Python donde se instalará esa librería X versión 1.2

PROYECTO #1

  • Se desea probar el mismo proyecto pero ahora con la librería X versión 1.2
  • Se tienen dos opciones:
  1. Utilizar el ambiente virtual del PROYECTO #2, o bien
  2. Crear un ambiente virtual específico para el PROYECTO #1, instalando en ese ambiente virtual la librería X versión 1.2

Instalando Python En MacOSx

Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.003.jpeg

Para instalar python en Mac OSx, se debe ir a la siguiente dirección web: https://www.python.org/downloads/

Y descargar la versión más reciente de Python.

Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.004.jpeg

Una vez finalizada la descarga, se debe obtener el lugar donde se encuentra instalada la versión de python descargada.

Para esto se abre el terminal (confirmar que se esté utilizando el terminal con bash shell en lugar de zsh shell)* se utiliza el comando:

which python3

Acá se va a mostrar que el python3 se encuentra instalado en:

/usr/local/bin/python3

Una vez ubicado de dónde se está corriendo el comando, se debe buscar exactamente dónde está instalado, es por esto que se debe ingresar a la dirección:

cd /usr/local/bin/

Y se listan los archivos que estén dentro:

ls -la

Se puede observar que el python que recién se instaló, fue guardado en:

 /Library/Frameworks/Python.framework/Versions/3.10/bin/

Así cualquier paquete instalado con pip3 será almacenado también en esta dirección.

*Es importante que el "shell" terminal esté configurado para Bash, debido a que los nuevos sistemas operativos de Mac, vienen configurados por default para utilizarse terminal con zsh en lugar de bash.

Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.005.jpeg

Paso siguiente será instalar utilizando pip3, virtualenv y virtualenvwrapper 4.8.4

sudo pip3 install virtualenv virtualenvwrapper=='4.8.4'

Importante notar las comillas en el código y notar que son comillas sencillas. Hay algunos editores de texto que modifican estas comillas y pueden generar un error.

Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.006c.jpeg

Ahora es importante crear la carpeta donde se van a almacenar los ambientes virtuales.

Todas las instalaciones de paquetes especiales que están en ambientes virtuales, se instalan dentro de estas carpetas. Si se quiere eliminar un ambiente virtual, simplemente se borra la carpeta con el nombre del ambiente virtual.

En este caso la carpeta "master" donde estarán almacenados todos los ambientes virtuales tendrá por nombre: "virtualenvs"

mkdir ~/.virtualenvs

Posteriormente se debe modificar el archivo que el terminal lee apenas se inicia la sesión en la computadora o bien apenas se abre una ventana nueva del Terminal.

Tradicionalmente se ha venido utilizando el bash como shell, por lo tanto vamos a crear este archivo de la siguiente forma:

sudo nano ~/.bashrc

Una vez que se abra el archivo, se agregan las siguientes líneas de código al final del documento:

VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.10/bin/python3
VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.10/bin/virtualenv
export PATH=/usr/local/bin:$PATH
export WORKON_HOME=~/.virtualenvs
source /Library/Frameworks/Python.framework/Versions/3.10/bin/virtualenvwrapper.sh

Una vez que está editado el documento se puede salvar (CTRL+O) y cerrar el documento (CTRL+X)

CTRL + O
Tecla: ENTER
CTRL + X


**Importante revisar que estas líneas estén bien escritas, un punto, un espacio, un carácter mal escrito pueden generar errores, así que lo primero es revisar que todos los espacios estén en su terminal bien colocados y que no hayan espacios o caracteres extra.

Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.007.jpeg

Ahora bien antes de crear el primer ambiente virtual, es necesario realizar algunas configuraciones extra.

En este caso lo primero es crear el archivo ~/.bash_profile

sudo nano ~/.bash_profile

Este archivo será llamado cada vez que se inicie sesión o bien se abra una nueva ventana del Terminal.

Para esto se deben agregar las siguientes líneas de comando:

# Setting PATH for Python 3.10
PATH="/Library/Frameworks/Python.framework/Versions/3.10/bin:${PATH}"
export PATH=/usr/local/bin:$PATH
[[ -s ~/.bashrc ]] && source ~/.bashrc

Portada-MGonzalez506-ioT506-Costa-Rica-ioT-Internet-of-Things-Costa-Rica-Internet-de-las-cosas-Virtualenvironments-Python.008.jpeg

Finalmente para crear un ambiente virtual se utiliza el comando "mkvirtualenv".

Por ejemplo se puede crear un ambiente virtual que se llame "prueba" de la siguiente manera:

mkvirtualenv prueba

Una vez creado ya se puede notar como el primer elemento que se ve en el terminal es el nombre del ambiente virtual, recordando que se está trabajando sobre ese ambiente virtual.

A la vez para desactivar un ambiente virtual se utiliza solamente el comando:

deactivate

Y para activar un ambiente virtual o para cambiarse de un ambiente virtual a otro se puede utilizar el comando:

workon EL_NOMBRE_DEL_AMBIENTE_VIRTUAL_EN_EL_QUE_SE_QUIERE_TRABAJAR

Y finalmente si se desea conocer el nombre de todos los ambientes virtuales disponibles, es necesario solamente correr el comando:

workon