Skip to main content

Dominio de los entornos virtuales de Python: guía completa de venv, Docker y seguridad de tu código

Escrito por
blog feature snyk container custom base recommendations

10 de enero de 2024

0 minutos de lectura

Python, 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:

$ python3 -m venv /path/to/new/virtual/environment

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.

$ python3 -m venv myenv

virtualenv: Es una herramienta muy popular que crea entornos aislados de Python. Es anterior a venv y ofrece más funciones.

$ pip install virtualenv
$ virtualenv myenv

pipenv: Es una herramienta que busca reunir lo mejor del mundo del empaquetado en Python. Combina Pipfile, pip y virtualenv en un solo comando.

$ pip install pipenv
$ pipenv --three

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:

python3 -m venv myenv

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:

source myenv/bin/activate

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í:

(myenv) $

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:

python3.7 -m venv myenv

Verificar la instalación

Para confirmar que Python 3 está instalado en tu entorno virtual, puedes usar el siguiente comando:

python --version

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:

FROM python:3.8

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

CMD ["python", "./your-python-script.py"]

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:

docker build -t your-python-app .

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:

docker run -p 8000:8000 your-python-app

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:

npm install -g snyk

Luego, puedes analizar tu imagen de Docker para detectar vulnerabilidades:

snyk test --docker your-python-app:latest --file=Dockerfile

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.

Leer más

feature insights context
Blog

Los ataques autónomos ya están aquí. La defensa debe estar a su altura.

Los atacantes autónomos están reduciendo el tiempo disponible para defenderse. Descubre cómo el descubrimiento, la corrección, la validación y la prevención continuos pueden ayudar a los equipos de seguridad a seguirles el ritmo.

feature insights context
Blog

¿La prevención es, en esencia, un problema ya resuelto?

La prevención en el código generado por agentes está resuelta desde el punto de vista arquitectónico, pero elegir controles que protejan la seguridad sin ralentizar el desarrollo sigue siendo el desafío.

Live Stream

Agentes de remediación, sin misterios: por qué solucionar es mejor que encontrar

Descubre cómo el agente de remediación de Snyk utiliza inteligencia de seguridad, análisis de explotabilidad y validación para convertir las vulnerabilidades en solicitudes de incorporación de cambios listas para fusionarse.