Introducción
Bienvenido a este laboratorio sobre entornos virtuales de Python. El uso de un entorno virtual permite probar código Python en entornos encapsulados y evitar saturar la instalación base de Python con bibliotecas que quizás solo se necesiten para un proyecto específico. Esta práctica es fundamental para mantener configuraciones de desarrollo limpias, reproducibles y libres de conflictos.
En este laboratorio, obtendrás experiencia práctica con cinco herramientas populares para gestionar entornos virtuales y dependencias de Python:
- virtualenv: La herramienta fundamental para crear entornos de Python aislados.
- Poetry: Una herramienta "todo en uno" para la gestión de dependencias, empaquetado y publicación.
- Pipenv: Una herramienta que busca integrar lo mejor de los mundos de empaquetado en Python.
- Anaconda: Una plataforma popular para ciencia de datos que incluye potentes capacidades de gestión de entornos.
- UV: Un instalador y resolvedor de paquetes de Python de nueva generación extremadamente rápido.
Al finalizar este laboratorio, serás capaz de elegir y utilizar la herramienta adecuada para las necesidades de tu proyecto.
virtualenv
En este paso, aprenderás a utilizar virtualenv para crear y gestionar entornos de Python aislados. virtualenv es una herramienta diseñada para crear entornos de Python independientes, lo que te permite probar código en entornos encapsulados sin afectar la instalación global de Python. La herramienta ya viene preinstalada.
Primero, vamos a crear un directorio para almacenar tus entornos virtuales y luego crearemos uno nuevo llamado HelloWorld. Abre una terminal en el WebIDE y ejecuta los siguientes comandos:
mkdir -p ~/.virtualenvs
virtualenv ~/.virtualenvs/HelloWorld
Verás una salida que indica que el entorno se está creando. El entorno virtual se ubicará en el directorio ~/.virtualenvs/HelloWorld.
created virtual environment CPython3.10.12.final.0-64 in 257ms
creator CPython3Posix(dest=/home/labex/.virtualenvs/HelloWorld, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/labex/.local/share/virtualenv)
added seed packages: pip==24.0, setuptools==69.5.1, wheel==0.43.0
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
Ahora, vamos a activar el entorno virtual. Esto cambiará el prompt de tu terminal para incluir (HelloWorld), lo que indica que el entorno está activo. Cualquier paquete que instales usando pip será específico para este entorno y no afectará a tu instalación global de Python.
source ~/.virtualenvs/HelloWorld/bin/activate
Tras la activación, tu prompt cambiará para mostrar (HelloWorld):
(HelloWorld) labex:project/ $
Para salir del entorno virtual, simplemente utiliza el comando deactivate:
deactivate
Observa cómo el prefijo (HelloWorld) desaparece de tu terminal.
Para reactivar el entorno más tarde, puedes volver a usar el comando source desde cualquier ubicación:
source ~/.virtualenvs/HelloWorld/bin/activate
Tu prompt volverá a cambiar y estarás de nuevo en el entorno HelloWorld, listo para trabajar en tu proyecto.
Poetry
En este paso, explorarás Poetry, una herramienta moderna para la gestión de dependencias y empaquetado en Python. Te permite declarar las bibliotecas de las que depende tu proyecto y se encarga de gestionarlas (instalarlas/actualizarlas) por ti. Poetry ya está instalado en este entorno.
Asegúrate de haber desactivado tu entorno virtual anterior:
deactivate
Primero, vamos a crear un nuevo proyecto usando Poetry. Este comando configurará una estructura de directorios estándar para tu proyecto.
poetry new my-poetry-project
Este comando crea un nuevo directorio llamado my-poetry-project con la siguiente estructura:
my-poetry-project
├── pyproject.toml
├── README.md
├── my_poetry_project
│ └── __init__.py
└── tests
├── __init__.py
└── test_my_poetry_project.py
El archivo más importante aquí es pyproject.toml, que orquesta tu proyecto y sus dependencias. Veamos su contenido inicial:
cat my-poetry-project/pyproject.toml
La salida será similar a esta:
[tool.poetry]
name = "my-poetry-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
Ahora, entra en el directorio de tu nuevo proyecto:
cd my-poetry-project
Para añadir una nueva dependencia, utiliza el comando poetry add. Poetry encontrará automáticamente una versión adecuada y la añadirá a pyproject.toml. Vamos a añadir la biblioteca pendulum:
poetry add pendulum
Para instalar todas las dependencias listadas en pyproject.toml (por ejemplo, al clonar un proyecto), ejecutarías:
poetry install
Finalmente, para eliminar una dependencia, utiliza el comando poetry remove:
poetry remove pendulum
Esto elimina el paquete y actualiza el archivo pyproject.toml en consecuencia.
Pipenv
En este paso, aprenderás a usar Pipenv, una herramienta que busca integrar lo mejor de los mundos de empaquetado en Python. Crea y gestiona automáticamente un virtualenv para tus proyectos, además de añadir o eliminar paquetes de tu Pipfile a medida que los instalas o desinstalas.
Primero, crea un directorio para tu nuevo proyecto y accede a él:
cd ~/project
mkdir my_pipenv_project
cd my_pipenv_project
Ahora, instalemos un paquete. Pipenv creará automáticamente un nuevo entorno virtual y un Pipfile para rastrear tus dependencias. Vamos a instalar la biblioteca requests:
pipenv install requests
Una vez que el comando termine, verás dos archivos nuevos en tu directorio: Pipfile y Pipfile.lock. El Pipfile se utiliza para registrar qué dependencias necesita tu proyecto. Inspeccionemos su contenido:
cat Pipfile
La salida mostrará el paquete requests listado bajo [packages]:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = false
name = "pypi"
[packages]
requests = "*"
[dev-packages]
[requires]
python_version = "3.10"
Para activar el entorno virtual asociado a tu proyecto, ejecuta:
pipenv shell
El prompt de tu terminal cambiará, indicando que ahora estás dentro del entorno aislado del proyecto.
Para desinstalar un paquete, puedes ejecutar el comando uninstall desde dentro del shell activado:
pipenv uninstall requests
Para salir del shell del entorno virtual, simplemente escribe exit:
exit
Anaconda
En este paso, comenzarás a trabajar con Anaconda. Anaconda es una distribución de Python y R para computación científica que simplifica la gestión de paquetes y el despliegue. Su gestor de paquetes, conda, es excelente para crear y gestionar entornos. El comando conda está disponible en tu terminal.
Primero, vamos a crear un nuevo entorno llamado my_conda_env. También especificaremos la versión de Python a utilizar. La bandera -y confirma automáticamente cualquier solicitud.
cd ~/project
conda create -n my_conda_env python=3.10 -y
Una vez creado el entorno, debes activarlo para empezar a usarlo:
conda activate my_conda_env
Tu prompt de terminal ahora tendrá el prefijo (my_conda_env), lo que indica que el entorno está activo. Cualquier paquete que instales ahora será específico para este entorno. Instalemos numpy como ejemplo:
conda install numpy -y
Cuando termines de trabajar en el entorno, puedes desactivarlo:
conda deactivate
El prefijo desaparecerá de tu prompt y volverás al entorno base.
UV
En este paso, descubrirás UV, un instalador y resolvedor de paquetes de Python extremadamente rápido creado por Astral, los desarrolladores de Ruff. Está diseñado como un reemplazo directo para los flujos de trabajo de pip y pip-tools, siendo entre 10 y 100 veces más rápido. UV ya está preinstalado.
Comencemos inicializando un nuevo proyecto. El comando uv init creará un archivo pyproject.toml y un entorno virtual en un directorio .venv.
cd ~/project
uv init my-uv-project
Ahora, accede al directorio del proyecto recién creado:
cd my-uv-project
Para añadir una dependencia, utiliza el comando uv add. Es similar a poetry add o npm install. Vamos a añadir la biblioteca requests:
uv add requests
UV detecta y utiliza automáticamente el entorno virtual en el directorio actual. Puedes ejecutar comandos dentro de este entorno gestionado usando uv run. Comprobemos la versión de Python dentro del entorno:
uv run python --version
Deberías ver la versión de Python del entorno virtual, no la global.
Si prefieres activar el shell manualmente, puedes hacerlo igual que con un venv estándar:
source .venv/bin/activate
Tu prompt cambiará para mostrar (.venv), indicando que el entorno está activo. Para salir del shell activado, usa el comando deactivate:
deactivate
UV simplifica los flujos de trabajo al proporcionar un único binario increíblemente rápido para la gestión de paquetes y entornos.
Resumen
En este laboratorio, has obtenido experiencia práctica con varias herramientas esenciales para gestionar entornos virtuales y dependencias de Python. Gestionar correctamente el entorno de tu proyecto es una habilidad fundamental para cualquier desarrollador de Python, ya que garantiza la reproducibilidad y evita conflictos.
Has aprendido a:
- Usar virtualenv para crear, activar y gestionar entornos básicos y aislados.
- Aprovechar Poetry para un flujo de trabajo unificado que maneja la creación de proyectos, la gestión de dependencias y el empaquetado a través del archivo
pyproject.toml. - Utilizar Pipenv para gestionar las dependencias de la aplicación de forma declarativa con un
Pipfile, simplificando el proceso de configuración de un entorno de desarrollo. - Trabajar con Anaconda (
conda) para crear y gestionar entornos, una herramienta especialmente popular en la comunidad de ciencia de datos por su robusta gestión de paquetes complejos. - Descubrir UV, la nueva herramienta extremadamente rápida que unifica la instalación de paquetes, la resolución de dependencias y la gestión de entornos en un solo binario.
Cada herramienta tiene sus fortalezas, y la mejor elección a menudo depende de las necesidades específicas de tu proyecto y de tus preferencias personales de flujo de trabajo. Ahora estás preparado para tomar una decisión informada y gestionar eficazmente tus proyectos de Python.



