En efecto: llevo tiempo queriendo dejar de usar PIP. No es que sea malo haciendo lo que hace, que lo es, sino que es mucho tiempo usándolo -creo que desde que empecé a programar con Python- y ya toca cambiar a algo más moderno, funcional y que gestione mejor las dependencias.

Durante estos años, hay que reconocer que Javascript con Node.js le ha comido la tostada a Python en muchos aspectos. Y uno de ellos es la gestión de dependencias con herramientas como NPM o Yarn. Algunos dirán que NPM es una basura y que la gestión de dependencias es una locura cuando entran muchos paquetes y versiones. Y tienen razón, pero es que hacer eso mismo con PIP puede llegar a ser un auténtico calvario. Y es que si lo que quieres es actualizar los paquetes que usas, crear los tuyos propios, automatizar tareas o crear scripts custom, con Poetry la cosa se vuelve razonablemente sencilla.

Poetry is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

Instalar Poetry es muy sencillo, se puede hacer por ejemplo usando pip install poetry… pero como habiamos quedado en dejar de usar pip, usaremos el método recomendado:

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 -

No es necesario instalar Poetry cada vez que tengamos que crear un proyecto. Además éste detecta la versión de Python que tengamos y creará los virtualenvs necesarios de forma automática. Por supuesto lo podemos usar en nuestros proyectos con Django, Flash, scripts, etc.

Para más información nos vamos a la web oficial. Los comandos más básicos serian los siguientes:

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

Como digo llevo usándolo unos meses en todos mis proyectos en Python. Incluso algunos antiguos los he pasado a este sistema.

A pasarlo bien.