Introducción
Cuando alguien se inicia en la programación con Python, posiblemente no conozca el concepto de ambientes virtuales y sus implicaciones en la dependencia de paquetes, como en el uso de memoria del recurso de hardware que utilice. Este blog permitirá al lector conocer un poco sobre estos ambientes virtuales y crear un criterio para saber cuándo usarlos en sus diferentes proyectos.
Un ambiente virtual es una herramienta que ayuda a preservar las dependencias requeridas por diferentes proyectos separadas, creando ambientes virtuales aislados entre ellos. Representa una herramienta muy importante para los programadores en Python.
Los ambientes virtuales son necesarios porque:[1]
- Eliminan problemas de dependencia de paquetes, al dar la posibilidad de instalar versiones funcionales de éstos a versiones de Python; por ejemplo, Pytorch funciona muy bien para Python3.8 pero no para otras, específicamente con arquitecturas de hardware aarch64[2] .
- Hace que el proyecto esté auto contenido y sea reproducible, capturando el listado de todos los paquetes en un archivo conocido como requirements.txt. Generalmente, almacena en una carpeta todos esos paquetes.
- Permite instalar los paquetes en un anfitrión sin tener los privilegios para ello.
- Mantiene la carpeta global “site-packages/” limpia, removiendo la necesidad de instalar paquetes con alcance a todo el sistema y que posiblemente, solo sean necesarios para un proyecto.
- Pueden ser importados y exportados para ser reutilizados en varias computadoras.
Existen dos herramientas para crear ambientes virtuales, tanto en windows como en linux: Venv y Virtualenv.
![]() |
| Tabla 1. Código a ejecutar para lograr diferentes acciones entre venv y virtualenv. |
Aunque son muy parecidos en la aplicación, Vritualenv se caracteriza de Venv por:[6]
- Es más lento (al no tener el método de inicialización de datos de la aplicación).
- No es tan extensible.
- No puede crear entornos virtuales para versiones de python instaladas arbitrariamente (y descubrirlas automáticamente).
- No se puede actualizar a través de pip.
- No tiene una API programática tan rica (describe entornos virtuales sin crearlos).
De forma adicional, venv no puede descubrir automáticamente versiones de python instaladas arbitrariamente, mientras que virtualenv sí lo hace. Esto significa que con venv debe especificar la ruta completa del ejecutable de python, si desea usar alguna otra versión de python que no sea la primera en la ruta[7]. Con virtualenv, solo puede dar el número de versión. Consulte el descubrimiento de python en la documentación de virtualenv.
En tema de espacio sí debe considerarse crear la menor cantidad de ambientes virtuales. Generalmente, el programador utiliza un IDE[8]
para redactar, depurar y ejecutar sus programas, uno de ellos bastante utilizado es PyCharm[9]
que resulta gratuito para programar en Python y es multiplataforma.
Cada vez que se redacta el código para un proyecto, se abre una ventana como la mostrada en la figura 1, donde se aprecian los siguientes campos:
- Location (El primer campo). La ubicación de los archivos de código y auxiliares que componen el proyecto.
- Location (Abajo de new environment). La ubicación de los paquetes para el ambiente virtual a crear.
- Base interpreter. La ubicación del ejecutable Python con su versión específica a utilizar
![]() |
| Fig.1 Ventana de configuración para un proyecto nuevo en PyCharm. |
En tal caso se recomienda tener una versión preferida de Python, la cual puede instalarse de manera global para todo el sistema y, en tal caso, se podrán seleccionar las opciones “Inherit global site-packages” y “make avaiblable for all projects”, lo cual ocasionará que cada proyecto tenga un conjunto de paquetes comunes, ahorrando memoria del anfitrión.
Si no se tiene una versión preferida, entonces no deberán seleccionarse las opciones mencionadas en el párrafo anterior, pero deberá tomarse en cuenta que cada versión instalará sus propios paquetes y utilizará un espacio de memoria aislado de otras versiones.
La figura 2 Muestra el caso en que se crean ambientes virtuales para almacenar paquetes propios de la aplicación. El uso de memoria en disco duro es considerable, siendo el mayor de 4.3GB y el menor de 154MB. Si se almacenaran en los ambientes virtuales los códigos de tipo py, la cantidad de memoria utilizada por todos los proyectos en la carpeta “PyCharmProjects” podría reducirse hasta llegar cercanamente a un 33%; es decir, al proyecto que más memoria requiere.
![]() |
| Fig.2 Carpetas que contienen ambientes virtuales para proyectos en Python. |
Conclusiones
Los ambientes virtuales en Python se utilizan para aislar los recursos que requieren diferentes versiones de Python, lo cual facilita al programador la redacción de diversor programas asegurando la compatibilidad con los paquetes utilizados.
Se recomienda utilizar una versión de Python global para el sistema para disponer de todos los paquetes a utilizar en la mayoría de proyectos y crear la menor cantidad de ambientes virtuales que utilice paquetes distintos a la versión global, porque de esta manera se utilizará de manera óptima, los recursos de memoria del anfitrión.
Preguntas motivadoras
- ¿Cuál piensa que es el porcentaje de personas que, sabiendo programar aplicaciones sencillas de Python, desconocen la importancia de la buena administración de ambientes virtuales?
- ¿Será necesario tener varios ambientes virtuales en un IoT?
- ¿Cuál será la diferencia de instalar Python en un entorno Conda, respecto de los mencionados anteriormente?
Lecturas recomendadas
- Creación y administración de ambientes en Python. [enlace]
- Comparación de venv y virtualenv. [enlace]
- Virtualenv and venv: Python virtual environments explained. [enlace]
- Pipenv & Virtual Environments. [enlace]
- Installing packages using pip and virtual environments. [enlace]
Vídeos sugeridos
- Python Tutorial: VENV (Windows) - How to Use Virtual Environments with the Built-In venv Module. [enlace]
- Learn Python 1: First install and Virtual Environments - Windows 10. [enlace]
- The Complete Guide to Python Virtual Environments!. [enlace]
- Python Tutorial: VENV (Mac & Linux) - How to Use Virtual Environments with the Built-In venv Module. [enlace]
- How to Create Python Virtual Environment on Ubuntu – virtualenv. [enlace]
- How to use a Python Virtual Environment the RIGHT way with Jupyter Notebook. [enlace]
Referencias
[1] https://towardsdatascience.com/virtual-environments-104c62d48c54
[2] https://elandroidefeliz.com/identificar-tipo-de-procesador-en-android/
[3] https://www.collinsdictionary.com/dictionary/english/built-in-feature
[4] https://towardsdatascience.com/virtual-environments-104c62d48c54
[5] https://www.geeksforgeeks.org/python-virtual-environment/
[6] https://virtualenv.pypa.io/en/latest/
[7] [enlace]
[8] https://www.codecademy.com/article/what-is-an-ide
[9] https://www.jetbrains.com/pycharm/download/#section=windows





