python

Gestión de paquetes en python con poetry

Poetry (python poetry) es una herramienta que se encarga de la gestión de las dependencias y los paquetes en Python y que resulta muy conveniente usar en tus proyectos.

No hace falta ser desarrollador para crear algunos paquetes que puedan sernos útiles. Hay muchas tareas que queremos automatizar a lo largo del día y lo hacemos con scripts, cada uno en el lenguaje que mejor se adapte a nuestras necesidades o simplemente el que mejor conozcamos.

Uno de esos lenguajes y con los que en un tiempo relativamente bajo se pueden empezar a hacer cosas es Python, pero para los scripts no todo es el lenguaje.

Las librerías son fundamentales o las herramientas de gestión. Pero hay un detalle que es el responsable de que se puedan llegar a romper nuestros scripts y son las dependencias.

Una dependencia no es más que un software que se usa para componer otros, como un puzzle. Por ejemplo, para poder leer un fichero YAML se utiliza un paquete llamado PyYAML.

En nuestros scripts para leer un fichero YAML simplemente usaremos la función yaml.load(), así que tendremos que importar pyyaml para que nuestro script funcione.

Esa función no sabemos lo qué hace ni las dependencias que tiene a su vez y si una de las dependencias que pudiera tener pyyaml se rompiera nuestro script podría romperse sin que hubiéramos tocado absolutamente nada.

Para evitar todas estas cosas lo que hacemos es un paquete y para hacer eso de forma fácil y sencilla en Python tenemos varias herramientas, pero existe una que hace esta función especialmente fácil y se llama Poetry.

Poetry lo he descubierto gracias a Walter (w4c0s) que fue el que me lo comentó y le estoy muy agradecido la verdad.

La instalación de Poetry es bastante sencilla y aunque podemos instalarlo mediante un paquete, por ejemplo pip install poetry el método recomendado es usar el script de instalación:

En linux y mac:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

En Windows:

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -

De todos modos en la web del proyecto tenéis los métodos de instalación y su funcionamiento:

Simplemente decir que a nivel genérico los comandos importantes son:

poetry new -> Creamos un proyecto
poetry shell -> Ejecutamos una shell con los valores de poetry
poetry init -> Crea el fichero pyproject.toml
poetry build -> Generamos el paquete(.whl y .tar.gz)
poetry publish -> Lo publicamos en pypi.org

Presentación en la PyGotham 2019 de Nueva York donde se presentaba poetry