Hello,
… une autre version de python !? il y a des cas d’usage de ce besoin ? Aujourd’hui python2 n’est plus, depuis debian 11, donc on devrait tous n’utiliser que python 3, et dans ce cas pourquoi se restreindre à une version spécifique ?
Pour cette fameuse option « reinstall » l’effet de bord que j’imagine, et pas des moindres, c’est que ça risque juste d’installer une nouvelle version, par rapport à une version existante utilisée par un autre plugin. D’un autre côté, si tu ne force pas la reinstall, tu risque de te retrouver avec une ancienne version du package, pas forcément compatible avec ton nouveau plugin…
Une bonne pratique serait de fixer à minima la version majeure du package pour s’assurer de ne pas avoir de saut de version, et pas de régression. Est-ce possible sur ce fichier ? Mais, en faisant cela, on va au devant de conflits, entre 2 plugins qui vont demander des versions différentes d’un même package…
chaque langage a son propre gestionnaire de package, qui lui-même a son propre fichier pour configurer / fixer les packages et leur version !
- php => composer => composer.json & composer.lock => répertoire /vendor
- nodeJS => npm => packages.json & packages.lock => rep /node_modules
- python => pip => requierment.txt mais pas de lock (sais pas pourquoi) => /venv
Le fichier lock est utile pour résoudre les conflits. Il fixe les versions et on ne peut pas le générer tant qu’il y a des conflits dans la coniguration du json.
Une bonne pratique, c’est de versionner dans git le fichier des packages (le json et le lock) mais pas le répertoire des lib installées. Le développeur met à jour ces fichiers lorsqu’il y a des updates des librairies. L’utilisateur met à jour les plugins et l’installation des dépendances met à jour les dernières versions des lib.
Sur nos plugins on devrait appliquer ces consignes mais on risque les conflits de version: un ancien plugin demande la v1 d’une lib quand un autre plus récent veut la v2, forcément pas compatible… Comment corriger ce conflit ?
les venv pour python sont une solution à ce problème - 1 package par plugin isolé dans son propre venv - mais l’installatiotn globale proposée par le core n’utilise pas les venv il me semble. C’est donc une question ouverte, et elle concerne aussi plus largement les packages composer & npm.