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
venven 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), utilizapipfile, 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.tomlpara 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!

Deja un comentario