Cómo limpiar entornos virtuales

PythonBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá las prácticas esenciales para gestionar entornos virtuales de Python. Cubriremos cómo crear un entorno aislado para un proyecto, instalar dependencias específicas, eliminar paquetes innecesarios y, en última instancia, eliminar el entorno para liberar espacio en disco. Estas habilidades son fundamentales para mantener un flujo de trabajo de desarrollo limpio y organizado.

Creación y Activación de un Entorno Virtual

Primero, vamos a crear un entorno aislado para un proyecto de ejemplo. El uso de un entorno virtual asegura que los paquetes de este proyecto no entren en conflicto con los paquetes de otros proyectos o con la instalación de Python a nivel del sistema. Utilizaremos el módulo venv, que es la herramienta estándar incluida con Python.

El script de configuración ya ha creado un directorio de proyecto para nosotros en /home/labex/project/my_web_app. Naveguemos hasta él.

cd my_web_app

Ahora, cree un entorno virtual llamado venv dentro de este directorio. Es una convención común nombrar el directorio del entorno venv.

python3 -m venv venv

Este comando crea un directorio venv que contiene una nueva instalación de Python. Puede ver su contenido ejecutando:

ls -F venv/

Debería ver subdirectorios como bin/, include/, lib/, y un archivo de configuración.

bin/  include/  lib/  lib64@  pyvenv.cfg

Para empezar a usar este entorno, necesita "activarlo".

source venv/bin/activate

Después de ejecutar este comando, notará que el prompt de su shell cambia para incluir (venv), indicando que el entorno virtual está activo. Cualquier comando de Python o pip que ejecute ahora utilizará los ejecutables y paquetes dentro de este entorno.

Puede verificar esto comprobando la ruta del ejecutable de Python:

which python

La salida apuntará al binario de Python dentro de su directorio venv.

/home/labex/project/my_web_app/venv/bin/python

Instalación y Aislamiento de Dependencias

Con el entorno virtual activo, ahora podemos instalar las dependencias del proyecto. Se ha creado un archivo requirements.txt para usted, que enumera los paquetes necesarios.

Instale los paquetes usando pip:

pip install -r requirements.txt

Pip descargará e instalará flask y requests y sus dependencias en el venv.

Para ver los paquetes instalados específicamente en este entorno, use pip list:

pip list

Verá flask, requests y otros paquetes que se acaban de instalar.

Package            Version
------------------ --------
certifi            ...
charset-normalizer ...
click              ...
Flask              2.2.2
idna               ...
itsdangerous       ...
Jinja2             ...
MarkupSafe         ...
pip                ...
requests           2.28.1
setuptools         ...
urllib3            ...
Werkzeug           ...

Ahora, veamos el poder del aislamiento. Desactive el entorno para volver al contexto global de su sistema.

deactivate

El prefijo (venv) en su prompt desaparecerá. Ahora, ejecute pip list de nuevo.

pip list

Notará que flask y requests ya no están en la lista, porque solo se instalaron dentro del entorno virtual, manteniendo limpio su entorno global de Python.

Eliminación de Paquetes No Utilizados

A medida que un proyecto evoluciona, algunas dependencias pueden volverse obsoletas. Es una buena práctica eliminarlas para mantener el entorno optimizado y actualizar su archivo requirements.txt.

Primero, reactive el entorno virtual para gestionar sus paquetes.

source venv/bin/activate

Supongamos que nuestro proyecto ya no necesita el paquete requests. Podemos desinstalarlo usando pip. La opción -y confirma automáticamente la desinstalación.

pip uninstall -y requests

Verifique que el paquete ha sido eliminado listando nuevamente los paquetes instalados.

pip list

Verá que requests y sus dependencias (como urllib3, certifi, etc., si ya no son necesarias para ningún otro paquete) han desaparecido.

Después de eliminar un paquete, debe actualizar su archivo requirements.txt para reflejar el estado actual del entorno. Puede hacerlo "congelando" la lista de paquetes actual en el archivo.

pip freeze > requirements.txt

Puede ver el archivo actualizado para confirmar el cambio:

cat requirements.txt

El archivo ahora solo listará flask y sus dependencias.

click==...
Flask==2.2.2
itsdangerous==...
Jinja2==...
MarkupSafe==...
Werkzeug==...

Finalmente, desactivaremos el entorno por ahora.

deactivate

Eliminación del Entorno Virtual Completo

Cuando un proyecto se completa, o si desea comenzar de nuevo con un entorno fresco, el método de limpieza más sencillo es eliminar todo el directorio del entorno virtual.

Primero, asegúrese de no estar dentro del directorio my_web_app, ya que generalmente no es una buena idea eliminar un directorio en el que se encuentra actualmente. Vamos a movernos al directorio padre.

cd /home/labex/project

Antes de eliminarlo, puede verificar cuánto espacio en disco está utilizando el entorno virtual con el comando du (disk usage).

du -sh my_web_app/venv

La salida mostrará el tamaño total del directorio.

30M     my_web_app/venv

Ahora, elimine todo el directorio venv. El comando rm -rf elimina recursiva y forzosamente el directorio y todo su contenido. Tenga cuidado con este comando.

rm -rf my_web_app/venv

Verifique que el directorio ha desaparecido listando el contenido de my_web_app.

ls my_web_app

Verá que solo queda el archivo requirements.txt. El entorno virtual ha sido completamente limpiado.

requirements.txt

Resumen

En este laboratorio, ha aprendido el ciclo de vida completo de la gestión de un entorno virtual de Python. Ha practicado la creación de un entorno con venv, su activación, la instalación de dependencias desde un archivo requirements.txt, la observación del aislamiento de paquetes, la eliminación de paquetes innecesarios y, finalmente, la limpieza eliminando todo el directorio del entorno. Estas son habilidades cruciales para cualquier desarrollador de Python para mantener configuraciones de proyecto limpias, reproducibles y libres de conflictos.