Gestión de entornos en Python
Bibliografía
1. Introducción
Logo de Anaconda
Anaconda es una plataforma de código abierto diseñada para la creación y gestión de entornos virtuales en Python, enfocada en proyectos de ciencia de datos y aprendizaje automático. Proporciona una distribución de Python con numerosas bibliotecas preinstaladas, un gestor de paquetes eficiente y herramientas avanzadas, como los cuadernos Jupyter. La gestión de paquetes en Anaconda se realiza mediante el gestor Conda, aunque también es posible utilizar PIP.
Por otro lado, VENV es una alternativa más ligera para la creación de entornos virtuales sin las dependencias adicionales de Anaconda. En este caso, la gestión de paquetes se lleva a cabo con PIP.
Logo de Poetry
Poetry es otra herramienta de gestión de dependencias en proyectos de Python. Permite, entre otras cosas:
- Administrar dependencias por grupos (producción, pruebas, documentación, etc.).
- Crear y manejar entornos virtuales automáticamente.
- Facilitar la creación de wheels para empaquetar proyectos y publicarlos en PyPI.
Este tutorial asume el uso de un sistema basado en Linux, específicamente una distribución derivada de Debian. Ten en cuenta que algunos comandos pueden variar según la distribución o el sistema operativo utilizado.
2. Utilidades para la gestión de entornos
2.1. Creación de un entorno virtual
- VENV
- Anaconda
- Poetry
-
Actualizar el sistema operativo:
sudo apt update && sudo apt upgrade -y
-
Agregar el repositorio de Python más reciente:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update -
Instalar una versión específica de Python (por ejemplo, Python 3.10):
sudo apt install python3.10
-
Instalar VENV, PIP y herramientas de desarrollo:
sudo apt install python3.10-venv python3.10-dev python3-pip
-
Crear el entorno virtual:
python -m venv nombre_del_entorno
-
Activar el entorno:
source nombre_del_entorno/bin/activate
-
Abrir la terminal de Anaconda Prompt.
-
Crear un nuevo entorno:
conda create --name nombre_del_entorno
-
Activar el entorno:
conda activate nombre_del_entorno
-
(Opcional) Instalar y actualizar PIP con Anaconda:
Es posible usar PIP dentro de Anaconda, aunque no se recomienda mezclar paquetes de ambos gestores, ya que esto puede generar conflictos de versiones.
conda install anaconda::pip
pip install --upgrade pip
-
Instalar Poetry:
pip install poetry
-
Configurar Poetry para usar entornos virtuales dentro del proyecto: Este es el valor por defecto que tiene Poetry, en caso contrario Poetry funcionara como un gestor de dependencias sin instalar un entorno virtual especifico para el proyecto.
poetry config virtualenvs.in-project true
-
Crear un nuevo proyecto con Poetry:
poetry new nombre_del_proyecto
Esto generará una estructura de proyecto con un archivo
pyproject.toml
. -
Instalar dependencias y crear el entorno virtual automáticamente:
poetry install
2.2. Gestión de la caché
Para liberar espacio o solucionar problemas con dependencias, se puede purgar la caché con los siguientes comandos:
- PIP
- Anaconda
- Poetry
pip cache purge
conda clean --all
poetry cache clear --all .
2.3. Actualización de paquetes
Mantener las dependencias actualizadas es clave para el correcto funcionamiento del proyecto.
- PIP
- Anaconda
- Poetry
Actualizar todos los paquetes
Puedes utilizar el siguiente comando para actualizar todos los paquetes:
pip freeze | grep -v "^\-e" | cut -d = -f 1 | xargs -n1 pip install -U
Donde:
pip freeze
: Genera una lista de los paquetes instalados.grep -v "^\-e"
: Excluye las instalaciones en modo editable.cut -d = -f 1
: Extrae solo los nombres de los paquetes, sin las versiones.xargs -n1 pip install -U
: Actualiza cada paquete.
Actualizar un paquete específico
Para actualizar un paquete específico:
pip install --upgrade nombre_del_paquete
Actualizar todos los paquetes
Aunque Anaconda permite la instalación de paquetes con PIP, se recomienda evitar mezclar paquetes del repositorio de Anaconda y PIP, ya que esto podría causar conflictos. Si decides usar paquetes de Anaconda, puedes actualizar todos los paquetes con:
conda update --all
Actualizar un paquete específico
Para actualizar un paquete específico:
conda update nombre_del_paquete
2.4. Instalación de paquetes desde un archivo de requisitos
Cuando un proyecto necesita dependencias específicas, es útil usar un archivo
requirements.txt
:
-
Crear un archivo
requirements.txt
con los paquetes y versiones deseadas:numpy==1.21.0
pandas>=1.3.0
requests -
Instalar los paquetes desde el archivo:
pip install -r requirements.txt
2.5. Eliminar un entorno
- VENV
- Anaconda
rm -rf nombre_del_entorno
-
Listar los entornos disponibles:
conda env list
-
Eliminar un entorno:
conda env remove --name nombre_del_entorno
2.6. Integración del entorno con Jupyter
Para añadir el entorno virtual creado podemos seguir los pasos siguientes:
-
Instalar
ipykernel
para la integración con Jupyter:pip install ipykernel
-
Añadir el entorno a Jupyter:
python -m ipykernel install --user --name=nombre_del_entorno