Skip to main content

Entornos virtuales Python

Hola de nuevo, soy Feregrino y hoy les voy a hablar de los entornos virtuales de python.

--

Sin embargo, hay muchísimo más que eso, no basta con instalar la dependencia y listo ya está... sino que el lugar en donde se instale esta dependencia también es importante. Imagina que estás estás desarrollando dos aplicaciones: Aplicación A, y Aplicación B. Y que ambas dependen de Biblioteca X. Tu gestor de paquetes podría instalar la Biblioteca X en un lugar común para que ambas aplicaciones la usen.

Ahora, imagina que el creador de Biblioteca X la actualiza a su versión 2. Tu decides instalarla porque tiene funcionalidades que tu Aplicación A puede utilizar, entonces actualizas también tu Aplicación A a su versión dos. Luego al tratar de hacer lo mismo con tu Aplicación B... pero oh sorpresa, no puedes por alguna razón... y no solo eso tu aplicación ya no funciona porque está esperando la versión 1 de la biblioteca X...

Entonces decides regresar a la versión uno de la biblioteca X... pero ahora tu aplicación A está rota porque esta esperando la versión dos de X... ¿no sería mejor poder tener estas dos dependencias bien definidas y por separado?

Aquí es cuando los entornos virtuales comienzan a tener relevancia. Estos nos permiten crear entornos aislados para cada uno de nuestros proyectos, permitiendo que cada uno de los proyectos tenga sus dependencias y no le interese las dependencias de otros proyectos. Además de que también nos permiten usar diferentes versiones de Python para nuestros proyectos. Puedes verlo así, un entorno consiste de una versión de Python y algunos paquetes.

Para crear entornos virtuales tenemos diversas opciones, cada uno viene con sus ventajas y desventajas. Hay unos que ofrecen cosas que otros no, que en este video no voy a discutir, sin embargo les dejo algunos enlaces para que los conozcan más a fondo. Entre los gestores más comunes están:

  • venv: es el gestor por default
  • conda: muy conocido en el mundo de la ciencia de datos
  • pipenv: otro gestor muy interesante que he estado usando en el trabajo

Les voy a tratar de mostrar de rápido cómo pueden echar a andar un proyecto con pipenv usando la consola.

Aplicación de consola#

  1. Primero vamos a crear una carpeta llamada mi_proyecto.
  2. Luego me vamos a mover a la carpeta utilizando cd.
  3. Y dentro de esta voy a crear un script llamado mi_app.py un script de Python que se conecta a un servicio web y descarga un usuario... se conecta al servicio web utilizando la biblioteca requests.
  4. Y una vez creado, voy a tratar de ejecutar el script, sin embargo este va a fallar porque no tengo instalada la biblioteca requests
  5. Ahora, lo que se te puede venir a la mente es ejecutar pip install requests... pero lo que esto causaría es que requests se instale a nivel global. En su lugar, vamos a instalar pipenv.
  6. Ahora, una vez instalada podemos llamar a todos sus comandos ejecutando pipenv seguido del comando. Si todo sale bien, solamente tendremos que instalar pipenv una sola vez. Uno de los más importantes es pipenv shell que nos hará entrar al entorno virtual.
  7. Hacer esto generará un par de archivos en el directorio: Pipfile y Pipfile.lock, estos archivos contienen información sobre nuestro entorno: qué versión de Python se necesita y qué paquetes deben ser instalados. Más adelante les muestro cómo luce este archivo.
  8. Para confirmar que estamos en el entorno virtual en la consola el nombre del entorno aparecerá entre paréntesis.
  9. Ahora, si intentamos ejecutar nuevamente el script... pues volverá a fallar porque seguimos sin instalar requests.
  10. Para instalar la biblioteca dentro de nuestro entorno virtual ejecutamos el comando pipenv install seguido de la biblioteca a instalar, en este caso, requests.
  11. Una vez que se ha instalado, vamos a revisar el contenido del archivo Pipfile
  12. Una vez que se ha instalado... ahora si podemos ejecutar el script y este va a funcionar correctamente dentro de nuestro entorno.
  13. Para salir del entorno virtual ejecutamos el comando exit.
  14. Por último, si tratamos de ejecutar nuevamente el script volverá a fallar simplemente porque requests no existe mas que en el entorno del que acabamos de salir.

Y pues bueno, ahí lo tienen, de eso se tratan los entornos virtuales, muchas de las bibliotecas que encuentran en línea recomiendan siempre ser instaladas dentro de uno y espero ahora ustedes vean la razón y los comiencen a usar si es que aún no lo hacen.