• # Ah les devs ...

    Posté par (site web personnel) . En réponse au journal La galère de Python en déploiement. Évalué à 5.

    Bonjour ami(e)s devs de tout poil

    Et oui tout n'est pas toujours aussi simple dans l'informatique, surtout pour les devs qui veulent faire de l'admin système (l'inverse est aussi vrai :) )

    Quand on veut faire cohabiter plusieurs versions de plusieurs choses sur une machine voici quelques conseils :

    • ne pas travailler avec root : c'est dédié au système
    • si possible chaque "produit" devrait être géré par un utilisateur dédié cela peut devenir contraignant mais aussi très pratique car cela permet d'isoler les problèmes. surtout quand il s'agit d'éditeur ou de dev différent car a un moment ou a un autre les produits vont évoluer différemment mais c'est une méthode destinée au "gros projet"
    • pour des projets moins important un utilisateur suffit, mais différent de root et de votre utilisateur courant

    dans le cas de python (que je connais un peu) :
    - chaque projet devrait avoir son environnement créé avec le module venv et ce n'est pas la peine de le suivre avec git, un venv python c'est jetable et facile à reconstruire, par contre le fichier requirements.txt (pip freeze > requirements.txt) lui doit être suivie avec git

    Et si une version de python précise est nécessaire alors il faut télécharger les sources et le compiler, on trouve plein de scripts sur le net qui simplifie la chose (rech google "python from sources"), ensuite créer un environnement virtuel a partir de cette version

    Python n'est pas pire que les autres, c'est juste qu'il fait partie du système. vous pouvez essayer de changer des librairies C vitales pour le système et vous aurez les mêmes problèmes.

    Un principe de base et de ne pas interférer avec les composants du systèmes, en mode dev "apt install" suffit mais si votre projet prend de l'ampleur, alors il faudra passer par une isolation de chaque composants pour maitriser les différences de versions et une procédure d'installation.

    Après tout dépend du projet mais un projet comme le tien se doit de tenir sur la durée et une solution serait de packager une VM basé sur une debian.

    C'est possible de le coder avec ansible, terraform, fai ou autre. problème cela peut prendre du temps à faire ce genre de choses, même si l'IA peut aider quand on ne connait pas les techniques.

    Docker c'est bien mais comme d'habitude ce n'est pas magique non plus.

    Il existe pléthore de solutions, le problème c'est de trouver la bonne ou plutôt la moins mauvaise. et cela devient de plus en plus difficile de tout connaître et tout évolue très vite.

    Chaque fois que je tombais sur un problème difficile ou en dehors de mon domaine je recherchais comment font les autres ...

    Et puis comme on dit chez les shadoks : à chaque problème une solution, si la solution n'existe pas alors c'est qu'il n y a pas de problème :)