531 - Python. Poetry para mis ojos

531 - Python. Poetry para mis ojos

#poetry es la herramienta que estabas buscando para gestionar tus proyectos en #python. Se encarga de gestionar lasa dependencias así como de construir

1:25
-3:15

Llevo muchos años programando en Python, y tengo determinados hábitos y costumbres adquiridos, unos buenos y otras no tanto. En este tiempo, he ido evolucionando con las distintas versiones de Python. En general, los cambios que se han producido en Python, los he ido aceptando de buena gana, porque siempre han sido para bien. Sin embargo, hasta la fecha, no le había dedicado al entorno, el suficiente cariño. Y con el entorno, me refiero a las herramientas que me ayudan a trabajar con Python… Pero, esto ha sido hasta ahora, como te digo, hasta el momento en que he descubierto Poetry, que como digo en el título del podcast es Poetry para mis ojos. Lo siento pero no he podido resistirlo.

Python. Poetry para mis ojos

Un poquito de trasfondo

Como ya te he comentado en los últimos tiempos, estoy verdaderamente enamorado de Rust. Y no solo de Rust, si no también de cargo, que es el gestor de paquetes de Rust, y el encargado de crear un nuevo proyecto, gestionar las dependencias de un proyecto, etc.

¿Y porque te cuento esto? Porque esto es lo que echaba de menos en Python. Y digo echaba, con toda la intención del mundo.

Hasta la fecha, toda la gestión de dependencias de un proyecto de Python, lo hacía utilizando el archivo requirements.txt. Pero, vamos, que era algo que hacía completamente a mano. No es el único método que he utilizado hasta el momento, pero si es el que mas establecido tenía, en estos últimos tiempos.

Imagina, cuando conocí Cargo, el gestor de Rust, y vi las posibilidades, me imaginé que esto podría también existir para Python, sin saber, que efectivamente ya existía, y se llamaba Poetry.

Además, por otro lado, había otro concepto que había visto desde hacía tiempo, y que me rondaba la cabeza, que era ni mas ni menos que pyproject.toml. Lo cierto, es que había leído algo, pero no había profundizado. Era algo que tenía pendiente.

Ahora, gracias a Poetry, lo tengo todo resuelto, y resuelve mi ignorancia sobre pyproject.toml. De un golpe, dos asuntos resueltos… ¿Que mas se puede pedir?

Sobre Poetry

Pero ¿Que es Poetry?. Poetry, no es ni mas ni menos que una herramienta para gestionar dependencias y el empaquetado en Python. Como te decía, dos por el precio de uno.

Una herramienta que te permite declarar y gestionar las dependencias de tu proyecto Python de forma sencilla. Además, incorpora una característica, que si conoces Rust, te sonará, que es un archivo lockfile, donde se encuentra la versión de cada una de las dependencias que utilizas, de forma, que la instalación del entorno de trabajo será relativamente sencillo.

El primer inconveniente con el que te puedes encontrar es la versión de Python requerida, que no es ni mas ni menos que la 3.8 en adelante. Si, salvas este primer escollo, ni te lo pienses.

Instalación

Como ya te comenté en el podcast sobre Rust, aquí igualmente, te recomiendo que instalas Poetry desde el instalador oficial, porque esta herramienta es capaz de auto actualizarse, al igual que hace rustup.

Así, para instalar Poetry, simplemente tienes que ejecutar el siguiente comando en una terminal.

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

Por otro lado, te recomiendo que instales el autocompletado para la shell que estés utilizando, ya sea Bash, Zsh o Fish.

Uso y funcionamiento

Poetry se encarga de todo, de verdad, y como lo estás oyendo. No solo se encarga de gestionar las dependencias de tu proyecto, sino que también se encarga de crear la estructura de tu proyecto. Algo tan sencillo como ejecutar,

poetry new <nombre-de-tu-proyecto>

Por supuesto, que en el caso de que tu proyecto lo hayas gestionado de otra forma, también puedes pasar a gestionarlo con poetry de form asencilla.

Sobre las dependencias

Como te decía, esta herramienta se encargará de gestionar las dependencias de tu proyecto. Y además te permite definir grupos separados para las distintas dependencias. Es decir, puedes gestionar las dependencias para la parte de desarrollo, o para la parte de documentación. Todas ellas de forma completamente separadas.

Esto de hacer la gestión de las dependencias en grupos tiene una gran ventaja. Por ponerte un ejemplo, si distingues las dependencias de producción de las de desarrollo, cuando tengas que instalar tu proyecto, no necesitas instalar las dependencias de desarrollo, solo necesitas instalar las dependencias de producción, las dependencias principales.

Otra operación que nos facilita enormemente la vida, es el uso de Poetry, para actualizar todas y cada una de las dependencias de nuestro proyecto, sin la necesidad de hacerlo una a una.

Entornos virtuales

Los entornos virtuales siempre han supuesto para mi una fuente de conflictos en tanto en cuanto se entremezclaban con mi proyecto, y me despistaban. Ahora con Poetry, puedes elegir, si el entorno virtual lo tienes en el mismo directorio de tu proyecto, o si bien, los tienes todos en un directorio única y exclusivamente para ellos.

Pero además para ejecutar tu proyecto, no necesitas entrar en el entorno virtual, sino que puedes ejecutar tu proyecto directamente con Poetry, y el ya se encarga,

poetry run python main.py

Y si además tu proyecto tienes testing, también puedes ejecutarlo de forma sencilla, utilizando Poetry, de la siguiente forma,

poetry run pytest

Pero no solo esto, sino que además Poetry se encarga de gestionar los entornos que tengas y tenerlos completamente separados unos de otros.

Construcción

Además de todo esto, Poetry se encarga de construir tu proyecto, algo que es realmente interesante.

En mi caso particular, hasta la fecha, como te decía en la introducción, estaba utilizando el archivo requirements.txt para la gestión de dependencias, y posteriormente, para construir la imagen Docker, en el caso de que quisiera contenerizar el proyecto.

Esto mismo lo puedo hacer también con Poetry, pero en este caso utilizando los archivos pyproject.toml y poetry.lock.

Pero ahora con la ventaja que he comentado con anterioridad, y es que, yo no tengo que preocuparme de forma directa de gestionar las dependencias, de esto ya se encarga Poetry.

Conclusión

Como ves, estoy realmente emocionado de haberme dado de bruces con esta herramienta, que realmente me está facilitando la vida, y por esta sencilla razón también te la recomiendo.

En este sentido, en los próximos vídeos de Historias de un Pythonico, los dedicaré a configurar Poetry con el proyecto, para que veas lo sencillo y el potencial que tienes esta herramienta.


Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.

Deja una respuesta

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