Al desarrollar software, es fundamental mantener los entornos de trabajo controlados y reproducibles. Esto permite detectar y corregir errores con mayor facilidad. En Python, los entornos virtuales permiten aislar las dependencias de un proyecto y evitar conflictos entre diferentes versiones de librerías. Gracias a esto, la gestión de dependencias y el proceso de publicación de aplicaciones o paquetes se vuelve más sencillo. Aunque esto se puede hacer con el módulo integrado venv, esta tarea es aún más fácil con herramientas como Poetry, que ha ganado gran popularidad en los últimos años por su capacidad para gestionar proyectos de forma moderna, eficiente y robusta.
Este tutorial explica cómo crear y trabajar con entornos virtuales utilizando el módulo integrado venv de Python. Para luego, profundizaremos en cómo Poetry simplifica la gestión de dependencias, la definición de scripts y la publicación de aplicaciones, proporcionando un flujo de trabajo comparable al que ofrece el ecosistema de Node.js con npm.
Este contenido es ideal tanto para desarrolladores que están comenzando con Python como para quienes buscan optimizar y profesionalizar sus procesos de desarrollo y despliegue.
Tabla de contenidos
Un entorno virtual es una herramienta que permite crear un espacio aislado para un proyecto de Python. En este entorno, se instalan localmente las dependencias necesarias (librerías, módulos, paquetes), sin afectar al sistema global ni a otros proyectos. Esto ofrece ventajas clave tanto en el desarrollo como en la puesta en producción:
venvEl módulo venv es una herramienta incorporada en Python desde la versión 3.3, que permite crear entornos virtuales de forma sencilla. Estos entornos son especialmente útiles para aislar las dependencias de cada proyecto, evitando conflictos entre versiones de paquetes.
Para crear un entorno virtual, abre una terminal, navega hasta la carpeta donde tienes (o vas a crear) tu proyecto y ejecuta el siguiente comando:
python -m venv nombre_entorno
Donde nombre_entorno es el nombre que deseas asignarle al entorno. Esto generará una carpeta con la estructura necesaria para mantener las dependencias del proyecto aisladas del resto del sistema.
Al crear el entorno, se generará una carpeta con varios subdirectorios importantes y un archivo de configuración:
bin/ (o Scripts/ en Windows): contiene el intérprete de Python y otros ejecutables, como pip.lib/: almacena los paquetes que se instalen dentro del entorno.include/: guarda los archivos de cabecera, utilizados en sistemas tipo Unix.pyvenv.cfg: archivo de configuración que guarda detalles sobre el entorno, como la versión base de Python utilizada.Esta estructura permite mantener cada entorno aislado y completamente independiente del sistema.
Una vez creado el entorno, es necesario activarlo para empezar a usarlo. El comando de activación varía según el sistema operativo:
nombre_entorno\Scripts\activate
source nombre_entorno/bin/activate
Tras ejecutar el comando correspondiente, verás que el nombre del entorno aparece al principio de la línea en la terminal, indicando que está activo. Por ejemplo:
(nombre_entorno) usuario@equipo:~/proyecto$
Para desactivar el entorno y volver al entorno global del sistema, simplemente ejecuta:
deactivate
Esta forma de separar los entornos es muy útil cuando se trabaja en múltiples proyectos con distintos requerimientos.
Con el entorno activado, puedes instalar paquetes utilizando pip, como lo harías normalmente:
pip install nombre_paquete
Todos los paquetes se instalarán exclusivamente dentro del entorno virtual, sin afectar al sistema global.
Para guardar las versiones exactas de los paquetes instalados (algo esencial para replicar el entorno en otro sistema), puedes usar:
pip freeze > requirements.txt
Esto generará un archivo requirements.txt con la lista de dependencias y sus versiones. Luego, en otro entorno (por ejemplo, al clonar el proyecto en otra máquina), puedes recrear exactamente las mismas condiciones ejecutando:
pip install -r requirements.txt
Una vez creado el entorno virtual, conviene seguir ciertas buenas prácticas para aprovechar sus beneficios y evitar problemas comunes en el desarrollo o en el despliegue de proyectos:
venv contiene archivos específicos del sistema operativo y rutas locales. Por eso, no debe copiarse entre máquinas ni subirse a sistemas de control de versiones como Git. En su lugar, lo recomendable es reconstruir el entorno usando un archivo de dependencias que registre las bibliotecas necesarias.requirements.txt, que describe las versiones exactas de los paquetes instalados en el entorno. Esto permite que otras personas (o tú mismo en otro equipo o servidor) puedan replicar el entorno de una forma completamente fiable. Más adelante veremos herramientas que facilitan y automatizan esta gestión, como Poetry, que añade mayor control sobre las dependencias y sus versiones.requirements.txt y requirements-dev.txt), o con herramientas especializadas como Poetry gracias a la cual esto las dependencias se pueden gestionar de una forma sencilla..gitignore apropiado: Para evitar subir archivos innecesarios al repositorio, crea un archivo .gitignore que excluya el entorno virtual y otros elementos generados automáticamente. Un ejemplo básico para un proyecto en Python sería:# Entorno virtual venv/ # Cachés y archivos temporales __pycache__/ *.py[cod] *.log *.tmp # Archivos de entorno .env # Configuraciones de IDE .vscode/ .idea/
README.md que indique cómo crear y activar el entorno virtual. Esto mejora la experiencia de otros desarrolladores que trabajan en el proyecto.Aunque herramientas como venv permiten crear entornos virtuales para aislar las dependencias de nuestros proyectos, su uso requiere manejar múltiples comandos manualmente (como instalar dependencias con pip, mantener un archivo requirements.txt, o gestionar versiones compatibles). A medida que los proyectos crecen y se vuelven más complejos, esta forma tradicional puede volverse difícil de escalar y propensa a errores.
Aquí es donde entra en juego Poetry, una herramienta moderna que busca simplificar y centralizar la gestión de proyectos en Python. Con un enfoque todo en uno, Poetry facilita desde la creación del entorno virtual hasta la publicación del paquete, haciendo que trabajar en proyectos profesionales sea más fluido y predecible.
Poetry es una herramienta de gestión de dependencias y empaquetado para proyectos en Python. Su objetivo es proporcionar una experiencia consistente y estandarizada, eliminando la necesidad de herramientas separadas como pip, virtualenv, o setuptools, y reemplazándolas por un flujo de trabajo integrado basado en el estándar pyproject.toml.
Entre sus principales ventajas se encuentran:
pyproject.toml, lo que proporciona una visión clara y estructurada del proyecto. Además, el archivo poetry.lock asegura que las versiones instaladas sean exactamente las mismas en todos los entornos, mejorando la reproducibilidad.python -m venv ni activarlos manualmente.twine.npm o yarn, al combinar gestión de dependencias, entornos y scripts en un solo lugar.Poetry puede instalarse de forma rápida mediante su instalador oficial. En sistemas basados en Unix (como Linux y macOS), ejecuta el siguiente comando:
curl -sSL https://install.python-poetry.org | python3 -
Alternativamente, también es posible instalarlo con pip, aunque esta no es la forma recomendada oficialmente:
pip install poetry
Una vez completada la instalación, puedes verificar que todo esté correctamente configurado ejecutando:
poetry --version
Para comenzar un proyecto desde cero, abre una terminal y navega hasta el directorio donde quieres ubicarlo. Luego ejecuta:
poetry new mi_proyecto
Esto generará la siguiente estructura básica:
mi_proyecto/
├── pyproject.toml
├── README.md
├── src/
│ └── mi_proyecto/
│ └── __init__.py
└── tests/
└── __init__.py Una estructura básica de proyecto Python que contiene los siguientes elementos:
pyproject.toml: el archivo central de configuración del proyecto.README.md: un archivo para la descripción del proyecto.src/: contiene el código fuente de tu aplicación.tests/: carpeta para los tests del proyecto.Esta estructura está lista para comenzar a trabajar de inmediato.
Si ya tienes un proyecto en Python y quieres empezar a gestionarlo con Poetry:
poetry init
Esto lanza un asistente interactivo para generar el archivo pyproject.toml. Puedes definir las dependencias manualmente o dejarlas para más adelante.
requirements.txt, puedes importar las dependencias automáticamente con:poetry add $(xargs < requirements.txt)
Poetry añadirá los paquetes al pyproject.toml y resolverá las versiones compatibles.
Para indicarle a Poetry qué versión de Python debe usar en el entorno del proyecto:
poetry env use python3.12
Esto crea (o configura) el entorno virtual con la versión indicada. Asegúrate de tener esa versión instalada en tu sistema, en caso contrario se producirá un error.
Una vez creado el entorno virtual con poetry env use, puedes activarlo manualmente desde la terminal para trabajar directamente dentro de él.
source $(poetry env info --path)/bin/activate
%USERPROFILE%\.virtualenvs\mi_proyecto\Scripts\activate.bat
%USERPROFILE%\.virtualenvs\mi_proyecto\Scripts\Activate.ps1
Reemplaza mi_proyecto por el nombre real de la carpeta del entorno virtual, que generalmente sigue el patrón mi_proyecto-hash.
Esto activará el entorno virtual en tu terminal, permitiéndole ejecutar y depurar tu proyecto como de costumbre. Al igual que en el caso de venv verás que el nombre del entorno aparece al principio de la línea en la terminal, indicando que está activo. Por ejemplo:
(mi_proyecto) usuario@equipo:~/mi_proyecto$
Para instalar y agregar una dependencia al proyecto, usa:
poetry add nombre_paquete
Si la dependencia es únicamente para desarrollo (por ejemplo, para pruebas), agrega la bandera --dev:
poetry add --dev nombre_paquete
Cada vez que se agregue una dependencia, Poetry actualiza el archivo pyproject.toml y genera o actualiza el archivo poetry.lock, que almacena las versiones exactas de cada paquete.
Cuando se clona el proyecto en una nueva máquina o se necesita instalar las dependencias, simplemente ejecuta:
poetry install
Este comando:
poetry.lock.Para actualizar una dependencia a la versión más reciente (dentro de los límites permitidos por la configuración), usa:
poetry update nombre_paquete
Si deseas actualizar todas las dependencias, omite el nombre del paquete:
poetry update
Al igual que en Node.js, donde se pueden definir scripts en el package.json para ejecutar tareas, en Poetry puedes definir comandos personalizados en el archivo pyproject.toml mediante la sección [tool.poetry.scripts].
Dentro del archivo pyproject.toml, agrega la siguiente sección:
[tool.poetry.scripts] mi-script = "mi_modulo:main"
Esto indica que, al ejecutar poetry run mi-script, se invocará la función main() definida en el módulo mi_modulo.py.
A modo de ejemplo, se muestra como crear un script básico que solamente saca un mensaje por pantalla.
mi_modulo.py con el siguiente contenido: def main():
print("¡Hola desde Poetry!") pyproject.toml:[tool.poetry.scripts] saludo = "mi_modulo:main"
poetry run saludo
La salida será:
¡Hola desde Poetry!
Puedes modificar la función para que acepte argumentos usando sys.argv. Por ejemplo:
import sys
def main():
nombre = sys.argv[1] if len(sys.argv) > 1 else "Mundo"
print(f"¡Hola, {nombre}!") Al ejecutar:
poetry run saludo Daniel
La salida será:
¡Hola, Daniel!
En este tutorial hemos cubierto de forma integral:
venv que viene integrado en Python, y cómo gestionar las dependencias con pip freeze y requirements.txt.npm en el ecosistema Node.js.pyproject.toml, se define toda la configuración del proyecto, incluyendo nombre, versión, descripción, dependencias y scripts.Queda pendiente para una futura publicación la creación de un proyecto completo a modo de ejemplo.
Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.
En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…
En la serie Creación de una API REST con Express y TypeScript construimos una API…
Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…
En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…
Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…
En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…
This website uses cookies.