Dominio de los entornos virtuales de Python: guía completa de venv, Docker y seguridad de tu código
10 de enero de 2024
0 minutos de lecturaPython, como lenguaje de programación versátil y de uso extendido, cuenta con un amplio ecosistema de módulos y paquetes. Al explorar este ecosistema, es importante entender la función de los entornos virtuales. En este artículo, veremos qué son los entornos virtuales, por qué los desarrolladores los necesitan y algunas herramientas comunes para crear entornos virtuales de Python.
¿Qué son los entornos virtuales?
Un entorno virtual es un árbol de directorios independiente que contiene una instalación de Python de una versión específica, además de varios paquetes adicionales. Los entornos virtuales ayudan a separar las dependencias que usan distintos proyectos al crear espacios aislados para ellos. Esto significa que cada proyecto puede tener sus propias dependencias, independientemente de las que tengan los demás proyectos.
Veamos un ejemplo de cómo crear un entorno virtual con el módulo integrado venv de Python:
En el comando anterior, /path/to/new/virtual/environment se puede reemplazar por la ubicación que prefieras. Este comando crea un directorio si aún no existe y configura un nuevo entorno virtual en la ubicación especificada.
Por qué los desarrolladores necesitan entornos virtuales
Al trabajar en varios proyectos de Python, cada uno puede requerir distintas versiones de Python y de sus paquetes. Instalar todo de forma global podría provocar conflictos entre versiones y otros problemas. Aquí es donde entran en juego los entornos virtuales.
Los entornos virtuales permiten a los desarrolladores trabajar en varios proyectos de Python sin preocuparse por las interdependencias. Ofrecen un espacio aislado donde puedes instalar Python y otros paquetes, lo que garantiza que cada proyecto tenga sus propias dependencias y que estas no interfieran entre sí.
Además, los entornos virtuales ayudan a garantizar que tus proyectos sean reproducibles. Esto es sumamente importante cuando trabajas en equipo y necesitas compartir tu código con otras personas.
Distintas herramientas para crear entornos virtuales de Python
Hay varias herramientas disponibles para crear entornos virtuales de Python. Aquí tienes algunos ejemplos:
venv: Es una biblioteca estándar de Python disponible desde Python 3.3. Crea y administra un entorno virtual.
En el comando anterior, /path/to/new/virtual/environment se puede reemplazar por la ubicación que prefieras. Este comando crea un directorio si aún no existe y configura un nuevo entorno virtual en la ubicación especificada.
virtualenv: Es una herramienta muy popular que crea entornos aislados de Python. Es anterior a venv y ofrece más funciones.
pipenv: Es una herramienta que busca reunir lo mejor del mundo del empaquetado en Python. Combina Pipfile, pip y virtualenv en un solo comando.
En esencia, los entornos virtuales son una parte fundamental del desarrollo con Python. Tanto si tienes mucha experiencia como si apenas estás comenzando, comprender y usar entornos virtuales mejorará significativamente tu proceso de desarrollo.
Usar venv para crear entornos virtuales de Python
A continuación, veremos cómo usar venv, un módulo integrado de Python, para crear entornos virtuales. Aprovechar los entornos virtuales en Python es una práctica recomendada para aislar las dependencias específicas de cada proyecto y mantener ecosistemas de desarrollo ordenados. Por eso, venv es una herramienta esencial para desarrolladores y especialistas en DevOps que trabajan con aplicaciones de Python.
Cómo crear un entorno virtual con venv
Crear un entorno virtual con venv es sencillo. En la terminal, ve al directorio de tu proyecto y ejecuta el siguiente comando:
Este comando creará un directorio nuevo llamado myenv en el directorio actual. Este directorio contiene el entorno virtual, el intérprete de Python, la biblioteca estándar y varios archivos auxiliares.
Cómo activar y usar el entorno virtual
Una vez que hayas creado el entorno virtual, tendrás que activarlo. Al hacerlo, se ajusta tu PATH para que el comando python ejecute la versión del entorno virtual, en lugar del intérprete global de Python.
Puedes activar el entorno virtual con el siguiente comando:
Al activarlo, el indicador de la terminal cambiará para señalar cuál es el entorno activo. Debería verse más o menos así:
Ahora puedes instalar paquetes en este entorno sin afectar tu configuración global de Python.
Instalar Python 3 en el entorno virtual
Como el módulo venv viene incluido desde Python 3.3, Python 3 se instala automáticamente en el entorno virtual al crearlo. Sin embargo, puedes especificar otra versión de Python al crear el entorno. Por ejemplo, para crear un entorno con Python 3.7, usarías el siguiente comando:
Verificar la instalación
Para confirmar que Python 3 está instalado en tu entorno virtual, puedes usar el siguiente comando:
Este comando debería mostrar la versión de Python instalada en tu entorno.
Recuerda que usar venv para crear y administrar entornos virtuales es una habilidad esencial para el desarrollo con Python. Es una forma eficaz de administrar las dependencias de los proyectos y garantizar que sean coherentes y confiables.
Extra: configurar un entorno local de desarrollo de Python en un contenedor de Docker
Usar contenedores de Docker es una buena forma de crear artefactos reproducibles y evitar problemas de versiones con el sistema operativo nativo. Veamos cómo configurar un entorno local de desarrollo de Python con Docker. Explicaremos qué es Docker, por qué es útil para el desarrollo con Python, cómo crear un Dockerfile, cómo compilar y ejecutar una aplicación de Python en un contenedor de Docker y, por último, cómo proteger tus aplicaciones de Python en Docker con Snyk.
¿Qué es Docker?
Docker es una plataforma de código abierto que automatiza la implementación, el escalado y la administración de aplicaciones. Empaqueta el software en unidades estandarizadas llamadas contenedores, que incluyen todo lo que el software necesita para ejecutarse: bibliotecas, herramientas del sistema, código y entorno de ejecución. Con Docker, puedes garantizar que los entornos sean consistentes, desde el desarrollo hasta la producción.
Por qué usar Docker para el desarrollo con Python
Docker ofrece varias ventajas para el desarrollo con Python:
Coherencia: Los contenedores de Docker garantizan que tu aplicación se ejecute exactamente de la misma manera, sin importar dónde se implemente.
Aislamiento: Docker proporciona aislamiento, lo que significa que las dependencias de distintos proyectos se mantienen separadas. Esto facilita su administración y ayuda a evitar conflictos entre proyectos.
Reproducibilidad: Los contenedores de Docker son reproducibles, así que puedes compartir fácilmente el mismo entorno con otras personas.
Crear un Dockerfile para una aplicación de Python
Un Dockerfile es un script que contiene una serie de comandos e instrucciones para crear una imagen de Docker. Aquí tienes un ejemplo básico de un Dockerfile para una aplicación de Python:
En este Dockerfile, comenzamos con una imagen de Python 3.8. Luego copiamos el archivo requirements.txt en la imagen de Docker e instalamos las dependencias de Python. Después, copiamos el resto del código en la imagen de Docker y especificamos el comando para ejecutar la aplicación.
Compilar y ejecutar una aplicación de Python en un contenedor de Docker
Después de crear un Dockerfile, puedes compilar tu imagen de Docker con el comando docker build:
Este comando compila una imagen de Docker a partir de tu Dockerfile y le asigna el nombre your-python-app.
Para ejecutar la aplicación en un contenedor de Docker, puedes usar el comando docker run:
Este comando ejecuta tu aplicación dentro de un contenedor de Docker y asigna el puerto 8000 del contenedor al puerto 8000 de tu máquina.
Cómo proteger tus aplicaciones de Python en Docker con Snyk
Snyk es una herramienta que te ayuda a encontrar y corregir vulnerabilidades de seguridad en tus imágenes de Docker. Se integra con tu pipeline de CI/CD para garantizar que tus imágenes de Docker sean seguras antes de implementarlas.
Para usar Snyk, primero debes instalarlo:
Luego, puedes analizar tu imagen de Docker para detectar vulnerabilidades:
Este comando analiza tu imagen de Docker y tu Dockerfile para detectar vulnerabilidades. Si encuentra alguna, Snyk proporciona información detallada y recomendaciones para corregirla.
Te recomiendo leer nuestro artículo detallado sobre las prácticas recomendadas para contenerizar aplicaciones de Python con Docker, usar Snyk Advisor para encontrar paquetes de Python saludables, seguros y bien mantenidos en PyPI, y usar Snyk para proteger tus aplicaciones de Python.
¿Qué sigue?
Por último, quiero compartir contigo una gran variedad de recursos para seguir leyendo y explorando Python y la configuración de sus entornos virtuales.
Documentación de Pyenv
Pyenv es una herramienta sencilla, potente y multiplataforma para administrar varias versiones de Python. La documentación de Pyenv ofrece una guía para instalarla, usarla y administrar versiones de Python con Pyenv.
Enlace: Documentación de Pyenv
Documentación de Venv
Venv es una herramienta incluida desde Python 3.3 para crear entornos aislados de Python. La documentación de Venv ofrece una guía para crear, usar y administrar entornos virtuales de Python.
Enlace: Documentación de Venv
Documentación de Docker
Docker es una plataforma que permite a los desarrolladores crear, compartir y ejecutar aplicaciones en contenedores. La documentación de Docker ofrece una guía para instalar, usar y administrar contenedores de Docker.
Enlace: Documentación de Docker
Otros recursos útiles
A continuación encontrarás enlaces a otros recursos útiles con guías más detalladas y prácticas sobre la instalación de Python y la administración de entornos virtuales de Python.
Tanto si eres desarrollador como profesional de DevOps, estos recursos te ayudarán en tu recorrido por el desarrollo de software.
Encuentra y corrige vulnerabilidades en Python
Protege tus aplicaciones con el análisis de vulnerabilidades de Snyk y recomendaciones para corregirlas.
No se requiere tarjeta de crédito.
O regístrate con Azure AD Docker ID Bitbucket
Al usar Snyk, aceptas cumplir con nuestras políticas, incluidos nuestros Términos de servicio y nuestra Política de privacidad.


