Sèkun blog


Lancement de scripts en python via pipx combiné aux «inline script metadata»

2024-08-12 dev | tags : python

La gestion des dépendances en python ou le packaging n'est pas ce qui fait sa force, contrairement au langage Go qui permet de générer des binaires statiques. Un méthode classique est de simplement distribuer un script avec les dépendances associées, dans un fichier requirements.txt par exemple. Il y a de nombreux système de packaging non officiels pour python:

Mais si l'on veut simplement partager un script, et non un paquet, il est possible d'y inscrire ses dépendances via les inline script metadata, puis d'exécuter le script via pipx.

Il suffit d'écrire les dépendances dans un commentaire structuré, comme suit:

# /// script
# requires-python = ">=3.11"
# dependencies = [
# "pyqrcode",
# ]
# ///

La première et la dernière ligne sont indispensables. Un tel script pourra être exécuté via la commande pipx run path/to/script.py. La commande pipx va créer un environnement virtuel pour ce script, y installera les dépendances, puis l'exécutera. Pipx peut même récupérer un script si on lui fournit une url (ce peut être un fichier brut sur github/gitlab/gitea/forgejo).

Article publié le 12 août 2024.