Gestion de Entornos Virtuales en Python: Un enfoque general

Cómo-Instalar-y-Gestionar-Entornos-Virtuales-en-Python

Después de adentrarme en el término “entorno virtual”, me di cuenta de lo mucho que me estaba perdiendo y de las ventajas que, sin duda, no estaba aprovechando. No hace mucho me topé con la siguiente situación: intenté instalar una librería de Python —no recuerdo cuál exactamente— y al hacerlo, en la terminal apareció un mensaje que decía algo como: 

«El sistema gestiona sus propias instalaciones de paquetes, por lo que no se permite la instalación manual por motivos de seguridad.» 

Esto ocurre a menudo, especialmente en sistemas operativos modernos, donde la seguridad ha mejorado significativamente. Supongo que en Windows ocurre algo similar. Es decir, ya no basta con simplemente teclear pip install y esperar que todo funcione mágicamente. 

Aquí fue cuando me pregunté: «Entonces, ¿cómo instalo este paquete?». Justo en ese momento, mi curiosidad me llevó a investigar y me encontré con este término tan interesante: “entorno virtual”. Déjame decirte que esto cambió por completo mi perspectiva, fue como ver una luz al final del túnel. 

Por esta razón, quiero compartir contigo mi experiencia y, más importante aún, lo que significa gestionar tus propias instalaciones de paquetes y tener el control total sobre tu entorno de trabajo en Python. Acompáñame en este recorrido porque te aseguro que cada línea de este post valdrá la pena

Antes de adentrarnos en el concepto, quiero aclararte qué este tema en este caso será abordado desde una perspectiva general, donde conoceremos las distintas y variadas formas de crear un entorno virtual en Python.

Sin embargo, en futuros posts, estaremos abordando de una manera más específica a cada herramienta por separado para una mayor profundización, trataremos de lleno su uso, ventajas, desventajas, entre otros aspectos importantes, con este aclarado, ahora sí, ¡comencemos! 

¿Qué es un entorno virtual? 

Un entorno virtual en Python es un espacio aislado donde puedes alojar todas las librerías y paquetes que necesites, sin interferir con la instalación de Python en tu sistema. Es decir, te permite trabajar en diferentes proyectos sin que los paquetes de uno afecten a los de otro. 

Cuando inicias un entorno virtual, estás generando un espacio único y controlado, dentro del cual, puedes instalar cualquier herramienta que necesites: paquetes, librerías, frameworks, etc.

Aquí es donde radica una de las principales ventajas de los entornos virtuales: te permiten gestionar de forma independiente cada proyecto, sin depender de la configuración global de Python en tu sistema operativo (en mi caso, Arch Linux). 

¿Para qué necesito un entorno virtual? 

Esta es una de las preguntas más comunes que quizás te puedas hacer al desconocer el tema por completo, pero cuando te encuentras en situaciones como la de mi propia experiencia, justo allí te das cuenta, del verdadero valor que recibe el conocer de estas técnicas 

Los problemas que un entorno virtual resuelve son bastante significativos, y si estás metido de lleno en el mundo del desarrollo de software con Python, sabrás de lo que hablo, Por mencionarte algunos aspectos, un entorno virtual nos permite: 

  • Testear varias versiones de un mismo paquete: Este es un caso muy común, ya que tenemos la posibilidad de probar varias versiones de un mismo paquete a la vez 
  • Aislamiento: Un entorno virtual impide que se generen conflictos durante ese testeo de paquetes 
  • Consistencia: También es posible “clonar” o replicar el entorno virtual que tengamos en nuestra computadora, en otra y será exactamente igual, no cambiará nada en su configuración 
  • Control de dependencias: Permite especificar que paquetes y versiones necesitaremos en cada proyecto 

Herramientas para crear un entorno virtual en Python 

venv 

Comenzaré por hablarte de venv, una de las herramientas nativas que viene incorporada en Python a partir de su versión 3.3 en adelante, venv no es compatible con versiones anteriores a Python 3, sin embargo, existe su similar virtualenv, el cual es su predecesor con características muy similares, pero incluyendo su capacidad de compatibilidad con versiones anteriores de Python 

Características de venv 
  • Creación de entornos aislados con su propio directorio bin/scripts 
  • Incluido en la biblioteca estándar de Python (venv) 
  • Enfoque minimalista y más ligero que el resto 
     
Comandos básicos 
# Creando un entorno con venv 
python –m venv mi-entorno  

# Activación (Linux - Mac) 
source mi-entorno/bin/activate 

# Activación en Windows 
mi-entorno\Scripts\activate 

# Desactivación 
deactivate

virtualenv

Virtualenv actúa más como una herramienta externa integrada en Python desde mucho antes que se incorporara a venv. Al ser más antigua que venv, virtualenv es una herramienta (biblioteca) más avanzada pero más flexible que venv.

Características
  • Permite crear entornos virtuales para diferentes versiones de Python.
  • Es compatible con Python 2.x y 3.x (aunque Python 2 ya no tiene soporte oficial).
  • Ofrece más opciones de configuración que venv.
Vetajas sobre venv
  • Más rápido y eficiente que venv en algunos casos.
  • Soporta múltiples versiones de Python en un solo sistema.
  • Compatible con herramientas adicionales como pip-tools.
Comandos básicos
# instalacion
pip install virtualenv

# Creacion de un entorno virtual
virtualenv mi-entorno

# Activacion
# Linux\Mac OS
mi-entorno\Scripts\activate

#Windows
source mi-entorno/bin/activate

Conda 

Inicialmente, fue creado para la gestión de paquetes enfocados en Python, pero Conda ha evolucionado de manera significativa, incluyendo la gestión no solo de Python, sino, de muchos otros lenguajes de programación como Java, Scala, Fortran, R, entre otros. 

Características principales 
  • Gestión de paquetes: Con el uso de Conda, la gestión se vuelve aún más sencilla, ya que permite, instalar, desinstalar y actualizar paquetes y no solo se limita a paquetes, sino también, a aplicaciones, herramientas y bibliotecas. 
  • Entornos virtuales: La gestión y creación de diferentes entornos virtuales, se vuelve aún más simple, por lo que la preocupación de interferencias entre proyectos se reduce significativamente. 
  • Reproducibilidad: Al utilizar Conda, los usuarios pueden crear entornos que son fácilmente replicables en diferentes máquinas, lo que es útil para la colaboración y la implementación de proyectos. 
  • Multiplataforma: Conda es compatible con diferentes sistemas operativos, como Linux, Mac y Windows, lo que lo hace versátil para desarrolladores que trabajan en diversos sistemas operativos. 
     
Comandos básicos 
# Creando un entorno en Conda 
conda create –name mi-entorno python=3.12 

# Desactivación 
conda deactivate 

# Instalación de paquetes 
conda install numpy pandas

pipenv 

pipenv es una combinación entre pip y virtualenv, con la salvedad de añadir un archivo de bloqueo (pipfile.lock) para garantizar instalaciones deterministas, cuando menciono el concepto de “instalaciones deterministas” me refiero a que, cada vez que instales alguna dependencia de algún proyecto y luego, otro usuario instala en otra máquina dos o tres meses después, este obtendrá exactamente la misma versión de las dependencias o paquetes instalados 

Algunas características son: 
  • Automatización de entornos virtuales: Crea y gestiona entornos virtuales de forma automática 
  • Usa pipfile en lugar de requirements.txt: En lugar de un archivo de dependencias plano, (requirements.txt), utiliza pipfile, que tiene una sintaxis más limpia y organizada  
  • Mejora la gestión de dependencias: Permite definir dependencias explícitas para desarrollo y traducción dentro del pipfile 
  • Compatibilidad con Python tradicional (pip): Puedes seguir usando pip dentro del entorno virtual gestionado con pipenv  
Comandos básicos 
# Instalacion de pipenv 
pip install pipenv 

# Verificar la version instalada 
pipenv --version

# Activación del entorno virtual de forma manual 
pipenv shell 

# Ejecucion de un comando en pipenv
pipenv run python script.py

# Instalacion de paquetes
pipenv install <nombre-del-paquete>

# Desinstalar un paquete
pipenv uninstall <nombre-del-paquete>

# Actualizar dependencias
pipenv update

# Salir del entorno virtual 

Exit

Poetry 

Poetry es otra herramienta para la gestión de dependencias y empaquetado, la cual mejora y simplifica el flujo de trabajo si lo comparamos con otras herramientas como setuptools y pip.  

Características 
  • Gestión automática de dependencias
  • Utiliza un archivo pyproject.toml para definir el proyecto y sus dependencias 
  • Resuelve e instala de forma automática versiones compatibles sin necesidad de manejar manualmente requirements.txt 
  • Entorno virtual integrado: Crea y gestiona entornos virtuales de proyectos automáticamente  
  • No es necesario utilizar virtualenv 
  • Archivo de bloqueo (poetry.lock): Garantiza que las mismas versiones de las dependencias sean instaladas en todos los entornos, asegurando reproducibilidad 
Comandos básicos 
# Agrega una dependencia. 
poetry add paquete 

# Elimina una dependencia. 
poetry remove paquete 

# Instala las dependencias del proyecto 
poetry install 

# Actualiza las dependencias 
poetry update
Algunas recomendaciones de porque usar poetry en lugar de pipenv 
  • Más rápido en la resolución de dependencias. 
  • Usa pyproject.toml, que es un estándar moderno en Python. 
  • Mejor integración con herramientas de empaquetado

Conclusión  

Hemos dado un recorrido general por el concepto de entorno virtual, cubrimos los distintos tipos de herramientas que podemos utilizar para este fin como, pipenv, Conda, poetry, env, o virtualenv, conocimos algunos de sus comandos  básicos y características más comunes 

Sin duda alguna que contamos con múltiples opciones en cuanto a crear entornos virtuales, hay de todos los colores y sabores, todo de acuerdo con nuestras necesidades y preferencias  

Toma en cuenta que al final todas estas herramientas tienen la misma finalidad, la cual es crear y gestionar un espacio de trabajo, con la particularidad de que unas cuentan con mayor facilidad de uso y mejoras significativas; por tanto, dependerá de la que requiera nuestro proyecto.

Espero que este breve vistazo a los entornos virtuales en Python te haya sido de utilidad, en los siguientes posts trataremos cada herramienta por separado para profundizar de forma más detallada en cada una de ellas y así conocer más a fondo su uso,  

Gracias por leer y no olvides compartir el post con tus amigos en tus redes sociales, y aportar tu comentario será de mucho valor para el blog, tu feedback vale oro, gracias totales! 


Descubre más sobre {Bl0g Devel0pers}

Suscríbete y recibe las últimas entradas en tu correo electrónico.


Deja un comentario

Descubre más desde {Bl0g Devel0pers}

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo