Entornos de desarrollo en Python



@eduardo_gpg

Número de visitas 2522

Tiempo de lectura 4 min

9 Enero 2021

Siempre que comencemos con un nuevo proyecto en Python, no importa si sea grande o pequeño, lo mejor que podemos hacer es siempre crear un nuevo entorno de desarrollo. Un entorno donde podamos instalar todas las dependencias que nuestro proyecto necesite, llámense librerías, módulos o inclusive frameworks. 🐍

El que nosotros contemos con un entorno de desarrollo único para cada unos de nuestros proyectos, nos permitirá, no solo tener un mayor control sobre el proyecto per se, conociendo con exactitud: que dependencias de terceros estamos utilizando, si no además, conocer su versión exacta.

Por ejemplo, imaginemos que nos integramos a un equipo de desarrollo en Django, donde el principal proyecto se encuentra desarrollado en la versión 2.1. Para comenzar a trabajar en él, y comenzar a tirar código, lo primero que debemos hacer será, por supuesto, instalar Django en su versión 2.1 😋 Teniendo esto en cuenta, lo primero que se nos puede ocurrir es instalar Django 2.1 directamente en nuestro sistema.

$ pip install Django==2.1

En primera instancia esto puede sonar a una muy buena idea, instalamos una vez y listo, sin embargo, si lo analizamos más a fondo, esto no es así.

Verás, que pasa si el día de mañana debemos trabajar con un segundo, tercer o cuarto nuevo proyecto. Proyectos en los cuales utilicemos el mismo framework pero no en su misma versión. ☹

Recordemos, el utilizar versiones diferentes de la misma librería, módulo o framework, abre la posibilidad a un gran sin números de errores. Ya que de una versión a otra pudieron haber ocurrido cambios significativos, desde añadir nuevas clases, pasando por el cambio de código hasta, en los casos más extremos, la eliminación de. Acaso te suena: Este método se encuentra obsoleto o ha sido removido ?

Es por ello que, una muy buena practica, es siempre crear nuevos entornos de desarrollo para cada uno de nuestros proyectos, no importa el tamaño de estos. Mientras menos relación haya entre un proyecto y otro mucho mejor. Veamos. 🧐

Creación de entornos

En términos simples, un entorno de desarrollo (También conocidos como un entorno virtual) no es más que un mecanismo el cual permite gestionar, de una forma muy sencilla, paquetes en Python. Y tiene como el objetivo el crear espacios aislados de trabajo. Así de simple, entornos diseñados para desarrollar.

Con esto evitamos posibles errores al momento de utilizar dependencias compartidas entre un proyecto y otro.

_En términos un poco más simples podemos definirlos como directorio donde se almacenan todas las dependencias para un proyecto.

Y en Python, a partir de la versión 3.6, seremos capaces de crear nuestros propios entornos de desarrollo directamente con el lenguaje, utilizando el módulo venv.

Basta con situarnos en la terminal/consola, y ejecutar el siguiente comando:

python -m venv <Nombre del entorno>

Al nosotros ejecutar esto, se creará una nueva carpeta con el nombre de nuestro entorno. La carpeta contendrá todos los archivos necesarios para ejecutar el entorno de desarrollo.

Esta carpeta se creará en el directorio donde nos encontramos posicionados, sin embargo podemos definir un directorio diferente si así lo deseamos. 🦝

python3 -m venv /path/to/new/<Nombre del entorno>

De forma personal recomiendo que nuestro entorno tenga por nombre env. De esta forma sabremos que dicha carpeta será el entorno.

En caso tengas algún tipo de error relacionado con _virtualenv, entonces tendrás que instalar dicho módulo en tu sistema operativo_.

pip install virtualenv

Sería algo raro, pero puede suceder. 😅


Una vez hayamos creado el entorno, el siguiente paso será activarlo. Y para ello existen 2 formas de hacerlo,.

Unix:

source <nombre del entorno>/bin/active

Windows

<nombre del entorno>\Scripts\activate

Una vez con el entorno activado, ya podremos instalar la n cantidad de dependencias que necesitemos. Cada una de ellas se instalará, ya no en el sistema, si no en el entorno que se este ejecutando en ese momento. 🤩

NOTA: Una forma muy sencilla de conocer si nuestro entorno se encuentra en ejecución o no, es inspeccionar la terminal. Si al principio del puntero encontramos el nombre de nuestro entorno (en paréntesis), eso significa que el entorno esta activado.

Ejemplo:

(env) C:\Users\Eduardo\Documents>

Para finalizar el entorno, basta con ejecutar:

deactivate

Listo, y de esta forma tan sencilla, es como podemos crear y activar nuestros propio entorno.

Ojo, es importante mencionar que, para nosotros poder ejecutar nuestros proyectos, el entorno no solo debe estar activado, su no que también debe encontrarse en la misma ventana de la terminal.

Conocer dependencias instaladas

Algo muy común al nosotros trabajar con entornos de desarrollo, es conocer las dependencias (y sus versiones) que estamos utilizando. Para ello ejecutaremos el siguiente comando.

pip freeze

Este comando listará todas las dependencias instaladas para ese entorno.

A partir del listado, podremos crear el ya famoso archivo requirements.txt, con el cual podremos desplegar nuestros proyectos a producción. 🐍

Si quisiéramos que el listado tuviera un formato mucho más amigable podemos utilizar el siguiente comando.

pip list --format=columns

Indicando que queremos visualizar la salida mediante columnas.

Obtendríamos algo como lo siguiente.

Package             Version
------------------- -------
argon2-cffi         21.1.0
async-generator     1.10
attrs               21.2.0
backcall            0.2.0
bleach              4.1.0
cffi                1.15.0
decorator           5.1.0
defusedxml          0.7.1
entrypoints         0.3

Extras

Para poder tener bien organizados nuestros proyectos, yo recomiendo almacenar nuestros entornos, ya sea: dentro del proyecto per se, o en un nivel superior.

1️⃣ Si almacenamos el entorno directamente en el proyecto, debemos registrarlo en el archivo .gitignore, para de esta forma, al realizar algún commit, los archivos dentro del entorno no sean tomados en cuenta.

Te recomiendo ampliamente este .gitignore para proyectos en Python de la comunidad. Me ha salvado de muchos dolores de cabeza.

2️⃣ Por otro lado, si almacenamos el entorno en un nivel superior, les recomiendo la siguiente estructura:

your-project/
├── Virtual env
├── Project 

Que el entorno se encuentre al mismo nivel que el proyecto, y a su vez, dentro de una carpeta que permita distinguirlo de otros.

No existe como tal un consenso de donde y como deben almacenarse los entornos virtuales, aun que creo que las formas más comunes son estas 2. Ya sea en un nivel superior o en el mismo proyecto con el archivo .gitignore.

Por lo regular me decanto siempre por la segunda opción.

En ambos casos, siempre es conveniente generar el archivo requirements.txt

pip freeze > requirements.txt

Este archivo deberá actualizarse siempre que instalemos o desinstalemos alguna dependencia. 🕵️‍♂️

De igual manera, si queremos instalar dependencias a partir de dicho archivo, sepamos que podemos hacerlo. Basta con ejecutar el siguiente comando.

pip install -r requirements.txt

De esta forma evitaremos instalar dependencia por dependencia. Agilizando, significativamente el proceso.🤠

Eliminar entorno

Ya para finalizar, si en dado caso queramos eliminar un entorno, es muy sencillo, basta con desactivarlo, y posteriormente eliminar nuestra carpeta. 🍺

deactivate
rm -rf <Nombre del entorno>

¿El contenido te resulto de ayuda?

Para poder dejar tu opinión es necesario ser un usuario autenticado. Login

Más Tips y Ejercicios 🐍

Adquiere una subscripción PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 🔓
Nuevo límite: Incrementa tu límite de ejercicios por semana. 🚀
Contenido único: Recibe semanalmente recursos exclusivos de Python (Videos, Artículos y Capitulos del libro PyWombat, comienza como desarrollador Python. 🐍