Version python 3.9.2 incompatible avec le plugin (version demande 3.7.x)

Bonjour à tous, fraichement débarqué dans le forum, je suis déjà confronté à un petit souci. :grin:

Alors j’ai essayé d’écumer les discussions mais je n’ai trouvé aucune solution à mon problème que voici :

Lors de l’installation du Plugin Veolia Téléo j’ai une erreur une fois l’installation des dépendances terminées.

Version Jeedom 4.3.15

0073|********************************************************
0074|Installation terminée
0075|********************************************************
0076|Résumé installation :
0077|1. Mozilla Firefox 102.9.0esr
0078|2. geckodriver :
0079|armv7l geckodriver 0.32.0
0080|The source code of this program is available from
0081|testing/geckodriver in https://hg.mozilla.org/mozilla-central.
0082|This program is subject to the terms of the Mozilla Public License 2.0.
0083|You can obtain a copy of the license at https://mozilla.org/MPL/2.0/.
0084|3. Packages:
0085|firefox-esr					install
0086|python3-pip					install
0087|xvfb						install
0088|4. Python 3.9.2
0089|Error: Python version must be 3.7.x for Veolia IDF WebSite. The Python script will not be able to be executed.
0090|5. Python modules:
0091|PyVirtualDisplay    3.0
0092|selenium            4.1.3
0093|urllib3             1.26.5

Ok jusqu’à là tout va bien, je fais un petit check en SSH de la version python installé sur mon rpi4 (raspbian 11)

python -V
-> 3.9.2

Du coup j’installe une autre version de python (3.7.0) sauf que lorsque je suis en mode rescue et que j’effectue la commande dans l’onglet Système python -V j’ai la version 3.9.2 alors que lorsque j’effectue la même commande sur le rpi en SSH j’ai bien la bonne version. :sweat:

En remerciant d’avance ce qui pourront m’aider :smiley:

S’il manque des éléments n’hésitez pas à me le dire :+1:

Au plaisir d’échanger avec vous !

Salut @Rico-la,

Quel est ton but ?

  • Modifier le plugin pour toi afin qu’il fonctionne chez toi ?
  • Modifier le plugin afin qu’il fonctionne chez tout le monde ?
2 « J'aime »

Salut,

Alors qu’il fonctionne chez moi car je l’ai installé il y a peu.

(edit: Je ne sais pas s’il y a des remontées semblables à la mienne)

1 « J'aime »

Pour un plugin que j’ai repris, j’ai utilisé pyenv. Ca te permet d’installer la version de python que tu veux et où tu veux (indépendant du système, désinstallation par suppression du répertoire).


Cette doc : GitHub - pyenv/pyenv-installer: This tool is used to install `pyenv` and friends.
En résumé

Si tu veux préciser où installer pyenv, par défaut sous $HOME/.pyenv :

export PYENV_ROOT=/répertoire/où/installer/pyenv

Pour que ce soit installé sous le plugin et supprimé avec le plugin, tu peux l’installer sous plugins/[nom du plugin]/ressources/_pyenv

En ssh (pas forcément root) tu peux l’installer :

curl https://pyenv.run | bash

Pour les tests tu peux rajouter les lignes qui vont bien dans ~/.bashrc :

cat >> ~/.bashrc<< EOF
export PYENV_ROOT="$PYENV_ROOT"
command -v pyenv >/dev/null || export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init -)"
EOF

Là tu peux fermer le shell et le rouvrir pour prendre les modif en compte ou simplement lancer :

exec $SHELL

Installe la version dont tu as besoin (le dernière, histoire d’avoir les patches de sécurité) :

pyenv install 3.7.16

Déplace toi dans le répertoire où se trouve le script python à exécuter en python3.7 :

cd /foo/bar

Active la version de pyenv :

pyenv local 3.7.16

→ Cette ligne est magique, teste ceci :

python3 --version
cd ..
python3 --version

Tu auras 3.7.16 puis 3.9.2

Donc en shell, tu exécuteras le script avec la bonne version pour tes tests, mais le plugin pas. Pour ça, il faut modifier l’appel du script python :

        $pyenv_path = realpath(dirname(__FILE__) . '/../../ressources/_pyenv');
OU
        $pyenv_path = '/root/.pyenv';
OU
        $pyenv_path = '/répertoire/où/installer/pyenv';

        $cmd = 'export PYENV_ROOT="' . $pyenv_path . '"; command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"; eval "$(pyenv init -)"; ';
        $cmd .= 'cd ' . $script_path . '; '; // Là où se trouve ton script python
        $cmd .= 'nice -n 19 python3 TON_SCRIPT.py';

Là, ça va marcher à coup sûr.

Bonjour,

Je ne connais pas le plugin mais je pense que c’est une erreur de jouer avec les versions de python…

Il est plutôt probable que ce soit simplement le check de version fait par l’installation des dépendances qui soit abusif mais qu’en fait python3.9 convienne parfaitement.
Et si c’est pas le cas ce plugin va devoir être mis à jour car ce n’est pas tenable de rester en 3.7 avec bullseye

Donc ca serait plutôt le plugin à modifier pour supprimer ce check.

Bonjour, merci à vous deux pour vos réponses.

=> Oui j’avais envisagé cette méthode-ci. J’ai créer un equipement voir s’il y a remontées d’informations en attendant.
Sinon je passerai par cette solution. :+1:


=> Je suis allé voir dans le repo git. J’essayerai de faire tourner le script (en externe sur un autre environnement) voir s’il subsiste une incidence de version de python :+1:

Encore merci pour votre aide :smiley:

Salut @Mips

Dans le cas d’une dépendance à une version python inférieure à ce qui est installé, je te rejoins à 100%.

Je me sens presque obligé de justifier mon choix d’utiliser pyenv pour plugin-mymodbus :
sur des Raspberry ou des debian 10, la version python n’était pas suffisante (python 3.7) alors que pymodbus, le module de communication Modbus, requière 3.8 minimum. Je n’ai presque pas eu le choix ou alors j’excluais beaucoup d’utilisateurs qui ne veulent/peuvent pas upgrader leur OS ou ajouter une version de python supplémentaire sur leur OS (ce qui peut conduire à des atrocités).

A+
Michel

Je ne parlais pas de ton cas.

Ici je suspecte que le test a été fait pour imposer un minimum et forcer buster (sous stretch c’était 3.4) d’où ma remarque.
Ça n’allait pas plus loin, le sujet c’est le #plugin-teleo

… et je suis d’accord avec toi.

Pour les lecteurs suivants, je laisse les explications pour qu’on comprenne qu’il y a deux solutions en fonction d’une dépendance à python plus ancien ou plus récent.

Bonjour,

Je suis dans le même cas, avec ce problème de dépendance non du à la version de python en 3.9

Comment avez-vous résolu le problème ?

Je n’ai pas encore testé pyenv, savez-vous vous si @Aegis va corriger ça ?

Je peux attendre et tester la maj du plugin.

Cdt

Hello,

Merci pour vos retours.

Le check était là surtout car le fonctionnement a été vérifié qu"avec la version 3.7. Le plugin ne force pas la version de python à l’installation.

J’ai déjà un PR de quelqu’un pour changer le check mais je n’ai pas eu le temps de m’y pencher. Je vais regarder çà

1 « J'aime »

Version en ligne

Top!!!

Merci, tout est fonctionnel.