[Présentation] akenad

« Flash » Dépendances Python pour Jeedom et plugins :

EDIT : /!\ ATTENTION : Avec pip 21.0 (23/01/2021) : python2 et python3.5 ne sont plus supportés : Changelog - pip documentation v24.0 et pip · PyPI

Des plugins ont des démons en python3 alors que d’autres sont encore en python2.

Quelques exemples :

Plugin---------Python
deCONZ---------3
BLEA-------------3 (migré)
RfXCom----------3 (migré)
Broadlink---------3 (migré)
OpenZwave------2
OpenEnOcean—2

Jusqu’à début janvier 2020, pip et python pointaient par défaut sur python2.
Python2.7 n’est plus maintenu depuis janvier 2020, mais il y a encore des plugins qui l’utilisent.
pip 21.0 ne supportera plus python 2.7 en janvier 2021.
Donc si les plugin-openenocean et plugin-openzwave ne sont pas migrés en python3 (ou réécris) avant Janvier 2021, ça va se compliquer.

Dans le cas général, pour ajouter un module python nécessaire au fonctionnement d’un plugin en python2 :
$ sudo pip2 install nomdumodule

Jeedom installe python3 et pip3 mais il n’en n’a pas toujours été ainsi.

Pour voir si python3 et pip3 sont installés, commandes :

$ python3 --version
$ pip3 --version

S’ils ne sont pas installés, ils peuvent être installés manuellement avec les commandes :

$ sudo apt install python3
$ sudo apt install python3-pip

Pour lister les modules de la lib python2 :
$ pip2 list
ou
$ python2 -m pip list

Pour lister les modules de la lib python3 :
$ pip3 list
ou
$ python3 -m pip list

Les commandes :

$ pip list
ou
$ python -m pip list

listes les modules de la lib python 2 si pip et python pointent sur python2, et listes les modules de la lib python 3 si pip et python pointent sur python3.

/!\ ATTENTION : Voici 2 commandes que je recommande de ne pas lancer manuellement sous peine de casser les démons et/ou les dépendances de Jeedom et ses plugins :

$ sudo python3 -m pip install --upgrade pip NePasLancer
ou
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2 NePasLancer

La première commande met à jour pip et fait pointer pip sur python3 (et non plus python2).

La 2ième commande modifie la version de python par défaut au niveau système, python pointe alors sur python3 (et non plus python2). Par défaut, la 2ième commande (python3.7) concerne Buster (ce serait python3.5 sous Stretch).

Pour savoir sur quelle version de python pointent pip et python :

$ pip --version
$ python --version

Si pip ou python pointent sur python3 cela peut provoquer un dysfonctionnement pour les plugins encore en python2.

Si pip pointe sur python3, lors de l’installation des dépendances du plugin, les modules sont installés dans la lib python3 au lieu de python2.

Lorsque le démon (en python2) du plugin est lancé il ne va pas trouver les modules dont il a besoin et provoquer une erreur et donc peut s’arrêter.

Si python pointe sur python3, le démon (en python 2) est lancé avec python3, il peut alors y avoir des erreurs de syntaxe et donc peut s’arrêter.

Cas du plugin broadlink et le module python3 cryptography ici : Broadlink - Dépendances Dead après maj vers Buster - module python3 cryptography - #21 par akenad
(Problème similaire avec le plugin xiaomihome)

Un sujet dédié pour discussion ouvert par @Bonson et intitulé " Python 2 ou python 3" ici : Python 2 ou python 3

akenad :slight_smile:

4 « J'aime »