Guía integral para la gestión de la dependencia en Python

Al aprender Python, muchos principiantes se centran únicamente en el lenguaje y sus bibliotecas al tiempo que ignoran por completo los entornos virtuales. Como resultado, la gestión de proyectos de Python puede convertirse en un desastre: las dependencias instaladas para diferentes proyectos pueden tener versiones conflictivas, lo que lleva a problemas de compatibilidad.

Incluso cuando estudié Python, nadie enfatizó la importancia de los entornos virtuales, que ahora encuentro muy extraño. Son una herramienta extremadamente útil para aislar diferentes proyectos entre sí.

En este artículo, explicaré cómo funcionan los entornos virtuales, proporcionaré varios ejemplos y compartiré comandos útiles para administrarlos.

Problema

Imagine que tiene dos proyectos de Python en su computadora portátil, cada uno ubicado en un directorio diferente. Te das cuenta de que necesitas instalar la última versión de Biblioteca A para el primer proyecto. Más tarde, cambia al segundo proyecto e intenta instalar la biblioteca B.

Aquí está el problema: La biblioteca B depende de la biblioteca A, pero requiere una versión diferente a la que instaló anteriormente.

Ya que no has usado ninguna herramienta para Gestión de dependenciatodas las dependencias se instalan a nivel mundial en su computadora. Debido a las versiones incompatibles de la Biblioteca A, encuentra un error al intentar instalar la biblioteca B.

Solución

Para evitar tales problemas, se utilizan entornos virtuales. La idea es asignar un espacio de almacenamiento separado para cada Pitón proyecto. Cada almacenamiento contendrá todas las dependencias descargadas externamente para un proyecto específico de manera aislada.

Más específicamente, si descargamos la misma biblioteca A para dos proyectos dentro de sus propios entornos virtuales, la Biblioteca A se descargará dos veces, una vez para cada entorno. Además, las versiones de la biblioteca pueden diferir entre los entornos porque cada entorno está completamente aislado y no interactúa con los demás.

Ahora que la motivación detrás del uso de entornos virtuales es clara, exploremos cómo crearlos en Python.

Entornos virtuales en Python

Se recomienda crear un entorno virtual en el directorio raíz de un proyecto. Se crea un entorno utilizando el siguiente comando en el terminal:

python -m venv <environment_name>

Por convención, generalmente se nombra venadoentonces el comando se convierte en:

python -m venv venv

Como resultado, este comando crea un directorio llamado venadoque contiene el entorno virtual en sí. Incluso es posible entrar en ese directorio, pero en la mayoría de los casos, no es muy útil, como el venado El directorio contiene principalmente scripts del sistema que no están destinados a usarse directamente.

Para activar el entorno virtual, use el siguiente comando:

source venv/bin/activate

Una vez que se activa el entorno, podemos instalar dependencias para el proyecto. Mientras el venado se activa, cualquier dependencia instalada solo pertenecerá a ese entorno.

Para desactivar el entorno virtual, escriba:

deactivate

Una vez que el medio ambiente está desactivado, el terminal regresa a su estado normal. Por ejemplo, puede cambiar a otro proyecto y activar su entorno allí.

Gestión de dependencia

Instalación de bibliotecas

Antes de instalar cualquier dependencia, se recomienda activar un entorno virtual para garantizar que las bibliotecas instaladas pertenezcan a un solo proyecto. Esto ayuda a evitar conflictos de versión global.

El comando más utilizado para la gestión de la dependencia es PIP. En comparación con otras alternativas, pepita es intuitivo y simple de usar.

Para instalar una biblioteca, escriba:

pip install <library_name>

En los ejemplos a continuación en lugar de , escribiré pandas (la biblioteca de análisis de datos más utilizada).

Entonces, por ejemplo, si quisiéramos descargar la última versión de Pandas, deberíamos haber escrito:

pip install pandas

En algunos escenarios, es posible que necesitemos instalar una versión específica de una biblioteca. pepita proporciona una sintaxis simple para hacer eso:

pip install pandas==2.1.4 # install pandas of version 2.1.4
pip install pandas>=2.1.4 # install pandas of version 2.1.4 or higher
pip install pandas<2.1.4 # install pandas of version less than 2.1.4
pip install pandas>=2.1.2,<2.2.4 # installs the latest version available between 2.1.2 and 2.2.4 

Ver detalles de dependencia

Si está interesado en una dependencia particular que haya instalado, una forma simple de obtener más información al respecto es usar el pip show dominio:

pip show pandas

Por ejemplo, el comando en el ejemplo generará la siguiente información:

Ejemplo de la salida del Pip Show dominio

Eliminar la dependencia

Para eliminar una dependencia de un entorno virtual, use el siguiente comando:

pip uninstall pandas

Después de ejecutar este comando, se eliminarán todos los archivos relacionados con la biblioteca especificada, liberando así el espacio de disco. Sin embargo, si ejecuta un programa de Python que importa esta biblioteca nuevamente, encontrará un importador.

Archivo con requisitos

Una práctica común al administrar las dependencias es crear un requisitos.txt Archivo que contiene una lista de todas las dependencias descargadas en el proyecto junto con sus versiones. Aquí hay un ejemplo de cómo se vería:

fastapi==0.115.5
pydantic==2.10.1
PyYAML==6.0.2
requests==2.32.3
scikit-learn==1.5.2
scipy==1.14.1
seaborn==0.13.2
streamlit==1.40.2
torch==2.5.1
torchvision==0.20.1
tornado==6.4.2
tqdm==4.67.1
urllib3==2.2.3
uvicorn==0.32.1
yolo==0.3.2

Idealmente, cada vez que usa el pip install comando, debe agregar una línea correspondiente al requisitos.txt Archivo para realizar un seguimiento de todas las bibliotecas utilizadas en el proyecto.

Sin embargo, si olvida hacer eso, todavía hay una alternativa: el pip freeze Comando emite todas las dependencias instaladas en el proyecto. Sin embargo, pip freeze Puede ser bastante detallado, a menudo incluyendo muchos otros nombres de biblioteca que son dependencias de las bibliotecas que está utilizando en el proyecto.

pip freeze > requirements.txt

Dado esto, es un buen hábito agregar requisitos instalados con sus versiones al archivo requisitos.txt.

Cada vez que clona un proyecto de Python, se espera que un archivo requisito.txt ya esté presente en el repositorio de git. Para instalar todas las dependencias enumeradas en este archivo, utiliza el pip install Comando junto con el indicador -r seguido del nombre de archivo de requisitos.

pip install -r requirements.txt

Por el contrario, siempre que trabaje en un proyecto de Python, debe crear un archivo requisitos.txt para que otros colaboradores puedan instalar fácilmente las dependencias necesarias.

.gitignore

¡Al trabajar con los sistemas de control de versiones, los entornos virtuales nunca deben ser presionados para GIT! En cambio, deben mencionarse en un archivo .Gitignore.

Los entornos virtuales tienden a ser muy grandes, y si hay un archivo de requisitos.txt existentes, no debería haber problemas para descargar todas las dependencias necesarias.

Conclusión

En este artículo, hemos analizado el concepto muy importante de entornos virtuales. Al aislar las dependencias descargadas para diferentes proyectos, permiten una gestión más fácil de múltiples Proyectos de Python.

Todas las imágenes son del autor a menos que se indique lo contrario.