Poesía de Python: Gestión moderna y eficiente del entorno y las dependencias de Python

El ecosistema de Python tradicionalmente ha dependido de herramientas como pip y virtualenv para gestionar dependencias y entornos de proyectos. Si bien estas herramientas nos han servido bien, a menudo conducen a conflictos de dependencias, gestión manual de entornos y configuraciones de proyectos inconsistentes entre equipos.

Python Poetry resuelve estos desafíos al proporcionar una herramienta moderna y unificada de gestión de dependencias y entornos. Maneja todo, desde entornos virtuales hasta publicación de paquetes, todo mientras garantiza construcciones reproducibles a través de una resolución inteligente de dependencias.

Esta guía te mostrará cómo usar Poetry para optimizar tu flujo de trabajo de desarrollo en Python y evitar dolores de cabeza comunes con las dependencias.

Python Poetry vs. PIP

Poetry y pip sirven para propósitos diferentes en el ecosistema de Python. Mientras que pip es principalmente un instalador de paquetes, Poetry es una herramienta completa de gestión de dependencias y proyectos. Aquí están las principales diferencias:

1. Resolución de dependencias

  • Pip: Resolución simple y lineal de dependencias que puede llevar a conflictos
  • Poesía: Resolvedor avanzado de dependencias que evita conflictos antes de la instalación

2. Gestión de entornos virtuales

  • Pip: Requiere herramientas separadas (virtualenv, venv) y activación manual
  • Poesía: Crea y gestiona automáticamente entornos virtuales por proyecto

3. Configuración del proyecto

  • Pip: Utiliza requirements.txt para dependencias, setup.py para metadatos del proyecto
  • Poesía: Único archivo pyproject.toml para todas las necesidades de configuración

4. Archivos de bloqueo

  • Pip: Sin soporte integrado para archivos de bloqueo
  • Poetry: Genera poetry.lock para construcciones reproducibles en diferentes entornos

5. Publicación de paquetes

  • Pip: Requiere herramientas adicionales (twine, setuptools) para publicar
  • Poetry: Comandos integrados para construir y publicar paquetes

Cuando usar Poetry en lugar de pip

Elija Poetry cuando:

  • Esté trabajando en proyectos en equipo que necesiten entornos reproducibles
  • Esté construyendo paquetes que serán publicados en PyPI
  • Esté manejando árboles de dependencias complejos con posibles conflictos
  • Necesite gestión automatizada de entornos virtuales
  • Quiera una herramienta única para todo el flujo de trabajo de desarrollo

Siga utilizando pip cuando:

  • Trabajando en scripts simples con dependencias mínimas
  • Aprendiendo Python por primera vez
  • Necesitas instalar rápidamente un paquete único
  • Trabajando en entornos donde no es posible la instalación de Poetry
  • Manteniendo proyectos heredados que ya están configurados con pip

La regla general es: usa Poetry para cualquier proyecto que se compartirá, implementará o mantendrá a largo plazo. Usa pip para experimentos rápidos o ejercicios de aprendizaje.

Dicho esto, vamos directamente a usar Poetry.

Configuración de Python Poetry

Mayormente interactuarás con Poetry como una herramienta de línea de comandos (CLI), por lo que tiene sentido instalarla en todo el sistema de tu máquina. Esta sección cubre este crucial primer paso y cómo establecer algunas configuraciones predeterminadas para Poetry según tus necesidades.

Instalación de Poetry

Puedes instalar Poetry usando un script de instalación oficial, que se puede descargar y ejecutar con un solo comando.

Para macOS, Linux y WSL2:

$ curl -sSL https://install.python-poetry.org | sudo python3 -

Para Windows Powershell (ejecutar con privilegios de administrador):

$ (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

Si estás en Windows y has instalado Python desde la Tienda Microsoft (por alguna razón extraña), entonces reemplaza py con python en el comando anterior.

Después de que finalice el script de instalación, imprime un mensaje pidiéndote que agregues Poetry a tu PATH para que el poetry comando esté disponible en todas partes.

Para macOS, Linux y WSL2, agrega la siguiente línea a tu script de shell como .bashrc o .zshrc:

$ export PATH="/Users/bexgboost/.local/bin:$PATH"

Para Windows, puedes seguir las instrucciones de salida.

Posteriormente, verifica tu instalación ejecutando poetry --version.

Configuración de Poetry

La mayor parte de la configuración de Poetry se refiere a cómo se crean los entornos virtuales y cómo se instalan los paquetes. Puedes imprimir una lista (casi) completa de las configuraciones de Poetry con:

$ poetry config --list

La salida se verá algo así como abajo:

cache-dir = "/Users/bexgboost/Library/Caches/pypoetry" experimental.system-git-client = false installer.max-workers = null installer.modern-installation = true installer.no-binary = null installer.parallel = true keyring.enabled = true solver.lazy-wheel = true virtualenvs.create = true virtualenvs.in-project = null virtualenvs.options.always-copy = false virtualenvs.options.no-pip = false virtualenvs.options.no-setuptools = false virtualenvs.options.system-site-packages = false virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/bexgboost/Library/Caches/pypoetry/virtualenvs virtualenvs.prefer-active-python = false virtualenvs.prompt = "{project_name}-py{python_version}" warnings.export = true

En la primera línea, vemos una ruta hacia la caché de Poetry. Se utiliza principalmente para almacenar distribuciones de paquetes descargados y entornos virtuales. Los entornos virtuales que crees se almacenan aquí de forma predeterminada. Si deseas cambiar eso, puedes ejecutar el siguiente comando:

$ poetry config virtualenvs.path path/to/new/virtualenv/dir

Otra configuración importante es el número de núcleos utilizados durante las instalaciones. De forma predeterminada, está establecido en cuatro, pero podemos hacer que sea más rápido utilizando todos los núcleos de la CPU. Primero, averigua el número de núcleos de tu máquina ejecutando os.cpu_count() en el Intérprete de Python. Luego, establece la salida:

$ poetry config installer.max-workers = 10

Una configuración opcional es si crear entornos virtuales en su directorio de trabajo o en la caché. Esto se controla a través de la opción virtualenvs.in-project. Si lo establece en Verdadero, .venv directorio siempre se creará en su directorio de trabajo:

$ poetry config virtualenvs.in-project true

Creando un Nuevo Proyecto con Poetry

Sumérjase en los pasos clave para crear un nuevo proyecto con Poetry y entender su archivo de configuración principal.

Iniciando un nuevo proyecto Poetry

El uso de Poetry generalmente comienza creando un nuevo proyecto con el comandopoetry new:

$ poetry new explore-poetry $ cd explore-poetry

El comando crea un directorio explore-poetry prellenado con los siguientes archivos y directorios:

explore-poetry ├── pyproject.toml ├── README.md ├── explore-poetry │ └── __init__.py └── tests └── __init__.py

Esta estructura de directorios sigue las mejores prácticas de Python:

  • pyproject.toml: El archivo de configuración principal que define metadatos del proyecto y dependencias
  • README.md: Archivo de documentación que explica el proyecto
  • explore-poetry/: Directorio de código fuente que contiene el código del paquete principal, con __init__.py para convertirlo en un paquete
  • tests/: Directorio para archivos de prueba, con __init__.py para convertirlo en un paquete (importable)

Comprensión de pyproject.toml

Aquí, el archivo pyproject.toml requiere especial atención ya que es el único archivo no vacío generado por Poetry:

[tool.poetry] name = "explore-poetry" version = "0.1.0" description = "" authors = ["BexTuychiev <[email protected]>"] readme = "README.md" [tool.poetry.dependencies] python = "^3.8" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"

Este archivo orquesta tu proyecto y sus dependencias. Utiliza Tom’s Obvious, Minimal Language, que fue acordado como el lenguaje de configuración estándar para los paquetes de Python en PEP 518.

Todos los pyproject.toml archivos se dividen en secciones llamadas tablas usando corchetes como tool.poetry o build-system. Poetry utiliza estas tablas para gestionar dependencias, requisitos de construcción del proyecto u otras tareas.

Al ejecutar los comandos de Poetry descritos en las secciones siguientes, el pyproject.toml archivo se actualizará automáticamente.

Trabajando con Entornos Virtuales en Poetry

En esta sección, descubrirás los entresijos de la gestión de entornos virtuales en Poetry una vez que lo configures. Aprenderás por qué los entornos virtuales son importantes, cómo Poetry los maneja automáticamente y los comandos básicos para manipularlos, como la creación, activación y cambio. También aprenderás cómo gestionar las versiones de Python con Poetry.

Creación y activación de un entorno virtual

Cuando instalas Poetry por primera vez, no viene con entornos integrados, como lo evidencia una salida en blanco cuando ejecutas poetry env list:

$ poetry env list # no output

Pero tan pronto como comiences a agregar dependencias (más sobre eso más adelante) con poetry add nombre-del-paquete, crea automáticamente un entorno en el directorio de la caché para el proyecto. Por ejemplo, intentemos agregar requests como una dependencia:

$ poetry add requests

Deberías recibir una salida similar a la siguiente:

Creating virtualenv explore-poetry--I9GJYUn-py3.8 in /Users/bexgboost/Library/Caches/pypoetry/virtualenvs Using version ^2.32.3 for requests Updating dependencies Resolving dependencies... (2.5s) Package operations: 5 installs, 0 updates, 0 removals - Installing certifi (2024.8.30) - Installing charset-normalizer (3.4.0) - Installing idna (3.10) - Installing urllib3 (2.2.3) - Installing requests (2.32.3) Writing lock file

La primera línea indica que Poetry creó el entorno en la caché. Las líneas siguientes informan que las dependencias para requests se resuelven correctamente y se genera un archivo de bloqueo (más sobre eso más adelante, también).

Presta atención al nombre del entorno: explore-poetry--I9GJYUn-py3.8. El nombre incluye el nombre del directorio del proyecto, seguido de un ID único y luego la versión de Python que está utilizando el entorno.

La próxima vez que agregues una dependencia, Poetry utiliza automáticamente este entorno para instalar paquetes:

$ poetry add beautifulsoup4 Using version ^4.12.3 for beautifulsoup4 Updating dependencies Resolving dependencies... (1.1s) Package operations: 2 installs, 0 updates, 0 removals - Installing soupsieve (2.6) - Installing beautifulsoup4 (4.12.3) Writing lock file

Cuando uses Poetry, tu terminal no mostrará qué entorno virtual de Poetry está activo. Para ver esta información, necesitas ejecutar poetry env list:

$ poetry env list explore-poetry--I9GJYUn-py3.8 (Activated)

Para interactuar con el entorno de Poetry activo, puedes ejecutar poetry shell:

$ poetry shell

El comando abre una nueva sesión de shell dentro de la actual, y puedes ejecutar comandos como python o pytest.

Por ejemplo, para ejecutar scripts de Python:

$ poetry shell $ python script.py

Para ejecutar frameworks de desarrollo como Streamlit:

# Dentro del shell $ streamlit run app.py

Después, puedes salir del shell llamando exit.

Alternativamente, puedes ejecutar comandos en el shell de Poetry sin entrar en él con poetry run:

$ poetry run python script.py $ poetry run streamlit run app.py

Configurando la versión de Python

Cuando ejecutas poetry add o poetry install, Poetry utiliza automáticamente la versión de Python especificada en tu archivo pyproject.toml. Para especificar una versión diferente de Python, puedes ejecutar el comando env use:

$ poetry env use python3.11

Tenga en cuenta que Python 3.11 debe estar instalado en todo el sistema de su máquina para que el comando funcione.

Compruebe que Poetry esté utilizando el entorno con la nueva versión de Python:

$ poetry env list explore-poetry--I9GJYUn-py3.11 (Activated) explore-poetry--I9GJYUn-py3.8

Observe cómo el nuevo entorno se adjunta automáticamente a nuestro proyecto (los IDs son los mismos). Una vez que configure su versión de Python, puede eliminar los entornos con otras versiones para liberar espacio en disco:

$ poetry env remove python3.8

Al eliminar un entorno, solo tiene que especificar la versión de Python. También puede eliminar todos los entornos y empezar de nuevo:

$ poetry env remove --all

Ten en cuenta que --all elimina todos los entornos asociados con el proyecto actual, no los entornos de otros proyectos.

Si estás trabajando en proyectos de equipo, a menudo es mejor mantener el entorno virtual en el directorio del proyecto:

$ poetry config virtualenvs.in-project true

Este comando no tendrá ningún efecto si ya tienes un entorno para el proyecto en la caché. Para crear un entorno local, elimina primero todos los existentes de la caché.

Esto crea una .venv carpeta en tu directorio de trabajo, la cual debes añadir a tu archivo .gitignore.

Gestión de dependencias con Poetry

La gestión de dependencias es donde brilla Poetry. Proporciona funciones completas para especificar, instalar y gestionar dependencias para que nunca te encuentres con conflictos de dependencias infernales.

En esta sección, aprenderás sobre cómo agregar e instalar dependencias, crear grupos de dependencias, sintaxis de especificación de dependencias en pyproject.toml y archivos de bloqueo.

Agregando dependencias en Poetry

Cuando uses Poetry, utilizarás el poetry add nombre-del-paquete comando para instalar paquetes desde PyPI en lugar de pip install. Esto tiene varios beneficios:

  1. Agrega automáticamente el paquete a pyproject.toml con la restricción de versión correcta
  2. Actualiza el archivo de bloqueo para asegurar compilaciones reproducibles
  3. Resuelve dependencias para evitar conflictos
  4. Instala el paquete y todas sus dependencias en el entorno virtual

Por ejemplo, primero agreguemos Numpy como una dependencia:

$ poetry add numpy

Inmediatamente, deberías recibir un conflicto de resolución de dependencias que indique que la versión de Numpy que se está instalando no es compatible con tu versión de Python. La razón es que cuando cambiamos al entorno de Python 3.11, no actualizamos el archivo pyproject.toml en este momento, se ve así:

[tool.poetry.dependencies] python = "^3.8" requests = "^2.32.3" beautifulsoup4 = "^4.12.3"

El símbolo de acento circunflejo ^ se utiliza para indicar que nuestro explore-poetry proyecto es compatible con cualquier versión de Python hasta Python 4, pero el rango de versiones de Numpy solo admite versiones de Python entre 3.8 y 3.12, lo que es un rango más estrecho. El error de conflicto proviene de ese hecho.

Entonces, para solucionar el error, debes actualizar el rango de versiones de Python a lo siguiente:

python = ">=3.8, <3.12"

Una vez que realices este cambio, poetry add numpy debería funcionar como se espera.

Acabas de observar una de las mejores características de Poetry: detectar conflictos de versiones antes de instalar cualquier paquete en lugar de informarte sobre las incompatibilidades de versiones posteriormente, como lo hace pip.

La sintaxis para especificar versiones de dependencias

La poesía utiliza una sintaxis poderosa para especificar una amplia gama de versiones para la mejor sincronización entre dependencias. Aquí están los símbolos más utilizados:

  1. Caret (^): Permite actualizaciones de parches y menores pero no importantes. Ejemplo: ^1.2.3 permite actualizaciones de 1.2.3 a 1.9.9 pero no a 2.0.0.
  2. Tilde (~): Permite solo actualizaciones de parches. Ejemplo: ~1.2.3 permite actualizaciones de 1.2.3 a 1.2.9 pero no a 1.3.0.
  3. Versión exacta: Especifica el número de versión exacto. Ejemplo: 1.2.3 solo permite la versión 1.2.3
  4. Más grande que (>): Permite cualquier versión superior a la especificada. Ejemplo: >1.2.3 permite 1.2.4, 1.3.0, 2.0.0, etc.
  5. Menor que (<): Permite cualquier versión por debajo de la especificada. Ejemplo: <2.0.0 permite cualquier cosa por debajo de 2.0.0.
  6. Mayor o igual que (>=): Permite la versión especificada y las superiores. Ejemplo: >=1.2.3 permite la versión 1.2.3 y cualquier versión superior.
  7. Menor o igual (<=): Permite la versión especificada y todas las inferiores. Ejemplo: <=2.0.0 permite la versión 2.0.0 y cualquier versión inferior.
  8. Rango de versiones: Combina restricciones con comas. Ejemplo: >=1.2.3,<2.0.0 permite versiones desde 1.2.3 hasta 1.9.9
  9. Comodín (*): Se corresponde con cualquier versión. Ejemplo: 1.2.* se corresponde con cualquier versión que comience con 1.2

Por supuesto, puedes combinarlos según tus necesidades.

Creando grupos de dependencias en Poetry

En proyectos complejos con muchos componentes en movimiento, a menudo lidias con diferentes categorías de dependencias.

Por ejemplo, en un proyecto de aprendizaje automático, a menudo se crean diferentes tuberías y componentes para la ingestión de datos, limpieza de datos, ingeniería de características, entrenamiento de modelos, implementación y monitoreo. Sin mencionar que también hay que completar la documentación y ejecutar pruebas. Todos estos pasos tienen su ecosistema de herramientas, y mezclar sus dependencias infla el paquete de distribución final.

Con Poetry, puedes crear grupos de dependencias con nombres arbitrarios para instalarlos solo cuando sea necesario. O la mejor parte: los usuarios de tu paquete también pueden elegir instalar las partes que necesiten.

$ poetry add --group ui streamlit plotly dash $ poetry add --group dev black flake8 isort mypy pylint

Los comandos anteriores crean dos grupos de dependencias, ui y dev (si aún no existen), y dos subtablas en pyproject.toml:

[tool.poetry.dependencies] python = "^3.11" requests = "^2.32.3" beautifulsoup4 = "^4.12.3" numpy = "^2.1.3" [tool.poetry.group.ui.dependencies] streamlit = "^1.39.0" plotly = "^5.24.1" dash = "^2.18.2" [tool.poetry.group.dev.dependencies] black = "^24.10.0" flake8 = "^7.1.1" isort = "^5.13.2" mypy = "^1.13.0" pylint = "^3.3.1"

Aunque los grupos de dependencias estén separados, siguen resolviéndose entre sí. En otras palabras, si hay una dev dependencia que entra en conflicto con un paquete en ui, Poetry no realizará la instalación.

En algunos casos, puede crear grupos de dependencias opcionales o hacer que grupos existentes sean opcionales para que no se instalen de forma predeterminada cuando un usuario recrea el entorno de su proyecto. Para hacerlo, debe crear una nueva subtabla en el archivo pyproject.toml. Por ejemplo, haremos que el grupo ui sea opcional a continuación:

[tool.poetry.group.ui] optional = true [tool.poetry.group.ui.dependencies] streamlit = "^1.39.0" plotly = "^5.24.1" dash = "^2.18.2"

Se hace configurando el parámetro opcional a true antes de declarar las dependencias del grupo.

Reproduciendo un proyecto de poesía con el archivo poetry.lock

Si alguien clona tu repositorio de GitHub que contiene un proyecto de Poetry, pueden recrear una copia perfecta del entorno virtual de tu proyecto ejecutando un solo comando: poetry install.

El comando install utiliza el archivo más completo poetry.lock. A diferencia de pyproject.toml, el archivo de bloqueo lista:

  • Las versiones exactas de las dependencias principales se enumeran en pyproject.toml
  • Las versiones exactas de las dependencias de las dependencias principales (dependencias transitivas)

Por ejemplo, requests depende de urllib3, certifi, charset-normalizer y idna. Sin un archivo de bloqueo, estas subdependencias podrían resolverse a diferentes versiones en diferentes máquinas.

El archivo de bloqueo asegura que todos en tu equipo obtengan las mismas versiones de dependencias, previniendo el problema de “funciona en mi máquina”.

La diferencia entre poetry add y poetry install

Explicaremos la diferencia entre add y install comandos de Poetry con un caso de uso.

Supongamos que estás trabajando en un proyecto de detección de fraudes. Agregas tus dependencias iniciales:

$ poetry add pandas scikit-learn

Esto agrega los paquetes al archivo de bloqueo y pyproject.toml. Luego, tu colega clona el repositorio:

$ git clone fraud-detection-repo-link $ cd fraud-detection $ poetry install

Ejecutan el comando install para instalar todo lo que está listado en el archivo de bloqueo.

Más tarde, necesitas agregar un nuevo paquete:

$ poetry add xgboost

Tu colega realiza los cambios:

$ git pull $ poetry install

Ejecutan el comando install para instalar el nuevo paquete. Por lo tanto,

  • Usa poetry add cuando agregas nuevas dependencias
  • Utilice poetry install cuando necesite configurar un proyecto existente
  • Siempre haga commit de pyproject.toml y poetry.lock al control de versiones

Instalando grupos de dependencias con el comando poetry install

Anteriormente, aprendimos cómo agrupar dependencias en Poetry. Cuando ejecutas poetry install, instala todos los grupos no opcionales por defecto, lo cual puede que no sea lo que deseas en todos los casos.

Por ejemplo, puede que estés clonando un repositorio solo para trabajar en la documentación. O quieres trabajar en el código principal del repositorio, excepto en los aspectos de documentación y pruebas. El comando install es lo suficientemente flexible como para cubrir todos estos casos:

Excluyendo ciertos grupos:

$ poetry install --without ui,dev

Instalando grupos opcionales también:

# Instalando el grupo de documentación opcional $ poetry install --with docs

Instalando solo grupos específicos:

$ poetry install --only ui

Instalando solo las dependencias de tiempo de ejecución del proyecto (las dependencias mencionadas fuera de los grupos, agregadas con el comando poetry add package):

$ poetry install --only main

Eliminando dependencias en Poetry

Eliminar una dependencia es sencillo utilizando el remove comando:

$ poetry remove requests

Esto elimina requests de las dependencias principales del proyecto. Para eliminar un paquete de una dependencia de grupo, puedes utilizar nuevamente la etiqueta --group:

$ poetry remove streamlit --group ui

El remove comando desinstala limpiamente el paquete, junto con sus dependencias transitivas.

Publicar un proyecto con Poetry en PyPI

Si tu proyecto está listo para ser distribuido, publicarlo en PyPI (Python Package Index) permite a otros desarrolladores instalar y utilizar tu código fácilmente a través de pip. Poetry hace este proceso muy sencillo con solo dos comandos:

$ poetry build # Construir distribuciones $ poetry publish # Publicar en PyPI

Sin embargo, antes de ejecutar estos comandos, debes configurar correctamente tus credenciales de PyPI. Primero, crea tus cuentas en:

  1. PyPI
  2. TestPyPI

Configura Poetry con tus credenciales:

$ poetry config pypi-token.pypi your-pypi-token $ poetry config pypi-token.testpypi your-test-pypi-token

Ahora, prueba primero tu paquete:

# Configurar el repositorio TestPyPI $ poetry config repositories.testpypi https://test.pypi.org/legacy/ # Publicar en TestPyPI $ poetry build $ poetry publish -r testpypi

Después de publicar en TestPyPI, puedes intentar instalar tu paquete para probar que todo funcione bien:

$ pip install --index-url https://test.pypi.org/simple/ your-package-name

Si todo está bien, puedes publicar en PyPI directamente:

$ poetry publish

Mejores Prácticas al Trabajar con Poetry

Existen muchas trampas y mejores prácticas al utilizar Poetry, y por supuesto, no podemos mencionarlas todas en un solo artículo. Pero aquí tienes algunas comunes que puedes aplicar de inmediato:

  1. Siempre usa entornos virtuales — Poetry los crea automáticamente para cada proyecto
  2. Mantén tu pyproject.toml bajo control de versiones pero excluye poetry.lock para bibliotecas
  3. Incluye poetry.lock en el control de versiones para aplicaciones para garantizar compilaciones reproducibles
  4. Utilice versiones semánticas para las versiones de su paquete (mayor.menor.corrección). Puede usar poetry version corrección/menor/mayor comandos para incrementar las versiones del paquete en uno. Por ejemplo, poetry version mayor cambia 0.2.0 a 1.0.0 en su archivo pyproject.toml.
  5. Especifique cuidadosamente las restricciones de la versión de las dependencias para evitar conflictos
  6. Actualice regularmente las dependencias con poetry update pero pruebe exhaustivamente después de las actualizaciones
  7. Utilice poetry add --group dev para las dependencias de desarrollo y mantenerlas separadas
  8. Documentar todos los propósitos de las dependencias en pyproject.toml utilizando comentarios
  9. Ejecuta poetry check antes de confirmar para validar pyproject.toml. También puedes considerar ganchos pre-commit.
  10. Usa poetry export para generar requirements.txt cuando sea necesario para otras herramientas.
  11. Mantén las dependencias de producción mínimas, mueve las características opcionales a extras
  12. Prueba la instalación de tu paquete en un entorno limpio antes de publicar
  13. Utiliza TestPyPI antes de publicar en el repositorio principal de PyPI
  14. Mantén un CHANGELOG.md claro para seguir los cambios de versión
  15. Utiliza poetry run para la ejecución de scripts y asegurar el uso correcto del entorno

Conclusión y Próximos Pasos

La poesía ha revolucionado la gestión de dependencias de Python al proporcionar una solución robusta e intuitiva a los desafíos comunes de gestión de paquetes. Sus potentes funciones para la resolución de dependencias, gestión de entornos virtuales y publicación de proyectos lo convierten en una herramienta invaluable para el desarrollo moderno de Python.

Para continuar tu viaje de desarrollo en Python, considera explorar estos completos caminos de aprendizaje:

Recuerda, la gestión efectiva de dependencias es solo un aspecto del desarrollo profesional en Python. A medida que sigas creciendo como desarrollador, herramientas como Poetry te ayudarán a construir proyectos en Python más mantenibles y confiables.

Source:
https://www.datacamp.com/tutorial/python-poetry