• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

Entornos virtuales en Python con Poetry

mayo 23, 2025 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 10 minutos

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

  • 1 Entornos virtuales en Python (venv)
  • 2 Creación y uso de entornos virtuales con venv
    • 2.1 Creación del entorno virtual
    • 2.2 Estructura del entorno virtual
    • 2.3 Activación y desactivación del entorno virtual
    • 2.4 Instalación de paquetes en el entorno
    • 2.5 Buenas prácticas y recomendaciones
  • 3 Gestión moderna de dependencias y empaquetado con Poetry
    • 3.1 ¿Qué es Poetry?
    • 3.2 Instalación de Poetry
    • 3.3 Inicialización de un proyecto con Poetry
      • 3.3.1 Usar Poetry en un proyecto existente
      • 3.3.2 Establecer la versión de Python
      • 3.3.3 Activar el entorno virtual
      • 3.3.4 Agregar dependencias
      • 3.3.5 Instalar todas las dependencias
      • 3.3.6 Actualización de dependencias
    • 3.4 Definición y uso de scripts personalizados
      • 3.4.1 Definir un script
      • 3.4.2 Pasar argumentos a los scripts
  • 4 Conclusiones

Entornos virtuales en Python (venv)

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:

Curiosidad: La Ley de Twyman y la trampa de los datos “interesantes”
En Analytics Lane
Curiosidad: La Ley de Twyman y la trampa de los datos “interesantes”

  • Aislamiento: Cada entorno tiene su propio intérprete de Python y su conjunto de paquetes, lo que evita conflictos entre proyectos que requieren versiones distintas de una misma librería. Por ejemplo, previene que la actualización de una librería afecte negativamente a un proyecto que depende de una versión anterior.
  • Reproducibilidad: Permite replicar el entorno de desarrollo en otra máquina (como un servidor de producción o el equipo de otro desarrollador) de forma exacta, garantizando que no haya discrepancias por el uso de versiones diferentes de librerías o incluso de Python.
  • Mantenimiento: Facilita la administración de paquetes y evita que actualizaciones globales afectan a los proyectos individuales. Como todas las dependencias están contenidas dentro del entorno virtual, es poco probable que una actualización externa rompa la aplicación.

Publicidad


Creación y uso de entornos virtuales con venv

El 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.

Creación del entorno virtual

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.

Publicidad


Estructura del entorno virtual

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.

Activación y desactivación del entorno virtual

Una vez creado el entorno, es necesario activarlo para empezar a usarlo. El comando de activación varía según el sistema operativo:

  • En Windows:
nombre_entorno\Scripts\activate
  • En Linux o macOS:
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.

Publicidad


Instalación de paquetes en el entorno

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

Buenas prácticas y recomendaciones

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:

  • No incluir el entorno virtual en el repositorio: La carpeta generada por 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.
  • Gestionar adecuadamente las dependencias: Mantén siempre actualizado un archivo como 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.
  • Separar dependencias por entorno: En muchos proyectos es habitual instalar herramientas adicionales para desarrollo (linters, pruebas, formateadores, etc.). Para evitar que estos paquetes terminen en producción, se recomienda separarlos del conjunto principal de dependencias. Esto puede hacerse usando múltiples archivos (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.
  • Usar un .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/
  • Documentar cómo crear el entorno: Aunque el archivo de dependencias facilita la instalación, conviene incluir en el proyecto un breve README.md que indique cómo crear y activar el entorno virtual. Esto mejora la experiencia de otros desarrolladores que trabajan en el proyecto.

Publicidad


Gestión moderna de dependencias y empaquetado con Poetry

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.

¿Qué es Poetry?

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:

  • Gestión de dependencias centralizada: Todas las dependencias se declaran en el archivo 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.
  • Entornos virtuales automáticos: Poetry gestiona por sí mismo los entornos virtuales, creando y activando automáticamente uno específico para cada proyecto, sin necesidad de usar python -m venv ni activarlos manualmente.
  • Publicación simplificada: Ofrece comandos integrados para construir y publicar paquetes en PyPI, lo que facilita el proceso de distribución sin requerir herramientas adicionales como twine.
  • Enfoque familiar para desarrolladores de otros ecosistemas: Si vienes del mundo JavaScript (Node.js), encontrarás que la filosofía de Poetry se asemeja a la de gestores como npm o yarn, al combinar gestión de dependencias, entornos y scripts en un solo lugar.

Publicidad


Instalación de Poetry

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

Inicialización de un proyecto con Poetry

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.

Usar Poetry en un proyecto existente

Si ya tienes un proyecto en Python y quieres empezar a gestionarlo con Poetry:

  1. Abre una terminal en el directorio raíz del proyecto.
  2. Ejecuta:
poetry init

Esto lanza un asistente interactivo para generar el archivo pyproject.toml. Puedes definir las dependencias manualmente o dejarlas para más adelante.

  1. Si ya tienes un archivo 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.

Establecer la versión de Python

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.

Activar el entorno virtual

Una vez creado el entorno virtual con poetry env use, puedes activarlo manualmente desde la terminal para trabajar directamente dentro de él.

  • En sistemas Unix (Linux/macOS):
source $(poetry env info --path)/bin/activate
  • En Windows (cmd):
%USERPROFILE%\.virtualenvs\mi_proyecto\Scripts\activate.bat
  • En Windows (PowerShell):
%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$

Agregar dependencias

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.

Instalar todas las dependencias

Cuando se clona el proyecto en una nueva máquina o se necesita instalar las dependencias, simplemente ejecuta:

poetry install

Este comando:

  • Crea (o usa) el entorno virtual si no está activo.
  • Instala todas las dependencias en las versiones especificadas en el archivo poetry.lock.

Actualización de dependencias

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

Publicidad


Definición y uso de scripts personalizados

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].

Definir un script

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.

Ejemplo práctico

A modo de ejemplo, se muestra como crear un script básico que solamente saca un mensaje por pantalla.

  1. Crea un archivo llamado mi_modulo.py con el siguiente contenido:
 def main():
    print("¡Hola desde Poetry!")
  1. Agrega el script en el pyproject.toml:
[tool.poetry.scripts]
saludo = "mi_modulo:main"
  1. Ejecuta el script:
poetry run saludo

La salida será:

¡Hola desde Poetry!

Pasar argumentos a los scripts

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!

Conclusiones

En este tutorial hemos cubierto de forma integral:

  • Entornos Virtuales (venv):
    • Concepto y definición: Los entornos virtuales son fundamentales para aislar las dependencias de un proyecto y evitar conflictos entre distintas versiones de librerías.
    • Creación y uso: Hemos visto cómo crear, activar y desactivar un entorno virtual usando el módulo venv que viene integrado en Python, y cómo gestionar las dependencias con pip freeze y requirements.txt.
    • Buenas prácticas: Se recomienda nunca copiar un entorno virtual de una máquina a otra, sino crearlo en la nueva máquina usando el listado de dependencias.
  • Gestión de dependencias y publicación con Poetry:
    • Ventajas sobre herramientas tradicionales: Poetry simplifica la administración de dependencias, crea y gestiona automáticamente entornos virtuales, y permite definir scripts personalizados, similar a npm en el ecosistema Node.js.
    • Configuración del proyecto: A través del archivo pyproject.toml, se define toda la configuración del proyecto, incluyendo nombre, versión, descripción, dependencias y scripts.
    • Uso de comandos: Se explicó cómo agregar dependencias, actualizar el entorno y ejecutar 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.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 5 / 5. Votos emitidos: 1

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Curiosidad: La Ley de Twyman y la trampa de los datos “interesantes”
  • Copias de seguridad automáticas en SQL Server con rotación de archivos
  • Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios
  • Error npm ERR! code EACCES al instalar paquetes en Node.js: Cómo solucionarlo paso a paso
  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Publicado en: Python

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

octubre 9, 2025 Por Daniel Rodríguez

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

octubre 7, 2025 Por Daniel Rodríguez

Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia

octubre 2, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • pandas Pandas: Cambiar los tipos de datos en los DataFrames publicado el julio 15, 2021 | en Python
  • Solución del error 504 Gateway Timeout en NGINX publicado el abril 10, 2024 | en Herramientas
  • Buscar en Excel con dos o más criterios publicado el septiembre 7, 2022 | en Herramientas
  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto