Erreur avec le plugin Teleinfos sous Jeedom v4.4 + Debian 12 (PHP 8.2.7)

Hello,

Apres avoir activer le plugin teleinfo, j’ai quelque problème lors de l’installation, il y a des erreurs lié la version de python :

0044|+ sudo pip3 install --upgrade pip
0045|error: externally-managed-environment
0046|× This environment is externally managed
0047|╰─> To install Python packages system-wide, try apt install
0048|python3-xyz, where xyz is the package you are trying to
0049|install.
0050|If you wish to install a non-Debian-packaged Python package,
0051|create a virtual environment using python3 -m venv path/to/venv.
0052|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0053|sure you have python3-full installed.
0054|For more information visit http://rptl.io/venv
0055|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0056|hint: See PEP 668 for the detailed specification.
0057|+ echo 7
0058|+ sudo pip3 install --force-reinstall --upgrade pylibftdi
0059|error: externally-managed-environment
0060|× This environment is externally managed
0061|╰─> To install Python packages system-wide, try apt install
0062|python3-xyz, where xyz is the package you are trying to
0063|install.
0064|If you wish to install a non-Debian-packaged Python package,
0065|create a virtual environment using python3 -m venv path/to/venv.
0066|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0067|sure you have python3-full installed.
0068|For more information visit http://rptl.io/venv
0069|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0070|hint: See PEP 668 for the detailed specification.
0071|+ echo 8
0072|+ sudo pip3 install --force-reinstall --upgrade six
0073|error: externally-managed-environment
0074|× This environment is externally managed
0075|╰─> To install Python packages system-wide, try apt install
0076|python3-xyz, where xyz is the package you are trying to
0077|install.
0078|If you wish to install a non-Debian-packaged Python package,
0079|create a virtual environment using python3 -m venv path/to/venv.
0080|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0081|sure you have python3-full installed.
0082|For more information visit http://rptl.io/venv
0083|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0084|hint: See PEP 668 for the detailed specification.
0085|+ echo 9
0086|+ sudo pip3 install --force-reinstall --upgrade pyserial
0087|error: externally-managed-environment
0088|× This environment is externally managed
0089|╰─> To install Python packages system-wide, try apt install
0090|python3-xyz, where xyz is the package you are trying to
0091|install.
0092|If you wish to install a non-Debian-packaged Python package,
0093|create a virtual environment using python3 -m venv path/to/venv.
0094|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0095|sure you have python3-full installed.
0096|For more information visit http://rptl.io/venv
0097|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0098|hint: See PEP 668 for the detailed specification.
0099|+ echo 10
0100|+ sudo pip3 install --force-reinstall --upgrade setuptools
0101|error: externally-managed-environment
0102|× This environment is externally managed
0103|╰─> To install Python packages system-wide, try apt install
0104|python3-xyz, where xyz is the package you are trying to
0105|install.
0106|If you wish to install a non-Debian-packaged Python package,
0107|create a virtual environment using python3 -m venv path/to/venv.
0108|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0109|sure you have python3-full installed.
0110|For more information visit http://rptl.io/venv
0111|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0112|hint: See PEP 668 for the detailed specification.
0113|+ echo 11
0114|+ sudo pip3 install --force-reinstall --upgrade requests
0115|error: externally-managed-environment
0116|× This environment is externally managed
0117|╰─> To install Python packages system-wide, try apt install
0118|python3-xyz, where xyz is the package you are trying to
0119|install.
0120|If you wish to install a non-Debian-packaged Python package,
0121|create a virtual environment using python3 -m venv path/to/venv.
0122|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0123|sure you have python3-full installed.
0124|For more information visit http://rptl.io/venv
0125|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0126|hint: See PEP 668 for the detailed specification.
0127|+ echo 12
0128|+ sudo pip3 install --force-reinstall --upgrade pyudev
0129|error: externally-managed-environment
0130|× This environment is externally managed
0131|╰─> To install Python packages system-wide, try apt install
0132|python3-xyz, where xyz is the package you are trying to
0133|install.
0134|If you wish to install a non-Debian-packaged Python package,
0135|create a virtual environment using python3 -m venv path/to/venv.
0136|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0137|sure you have python3-full installed.
0138|For more information visit http://rptl.io/venv
0139|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0140|hint: See PEP 668 for the detailed specification.
0141|+ echo 13
0142|+ sudo pip3 install --force-reinstall --upgrade paho-mqtt
0143|error: externally-managed-environment
0144|× This environment is externally managed
0145|╰─> To install Python packages system-wide, try apt install
0146|python3-xyz, where xyz is the package you are trying to
0147|install.
0148|If you wish to install a non-Debian-packaged Python package,
0149|create a virtual environment using python3 -m venv path/to/venv.
0150|Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
0151|sure you have python3-full installed.
0152|For more information visit http://rptl.io/venv
0153|note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
0154|hint: See PEP 668 for the detailed specification.

Il est possible de forcer les installations des dépendances demandées avec la commande suivante (surement pas recommandé ^^ ) :

Ex : pip3 install --force-reinstall --upgrade XXXX --break-system-packages

pip3 install --force-reinstall --upgrade pylibftdi --break-system-packages

Autre problèmes : (L330 - teleinfo/core/class/teleinfo.class.php )

         $port = jeedom::getUsbMapping(config::byKey('port', 'teleinfo'));
                    if ($twoCptCartelectronic == 1) {
                        $port = '/dev/ttyUSB1';
                    } else {
                      if (is_string($port)) { <-- A rajouter <---
                        if (!file_exists($port)) {
                            log::add('teleinfo', 'error', '[TELEINFO]-----[' . $type . '] Le port1 '. $port . ' n\'existe pas');
                            return false;
                        }
                      }
                    }

(L350 - teleinfo/core/class/teleinfo.class.php )

$port = jeedom::getUsbMapping(config::byKey('port_modem2', 'teleinfo'));
                    if ($twoCptCartelectronic == 1) {
                        $port = '/dev/ttyUSB1';
                    } else {
                      if (is_string($port)) {  <-- A rajouter <---
                        if (!file_exists($port)) {
                            log::add('teleinfo', 'error', '[TELEINFO]-----[' . $type . '] Le port2 '. $port . ' n\'existe pas');
                            return false;                          
                        }
                      }
                    }

Après ça le module fonctionne :slight_smile:

Bonsoir, je n’ai eu aucun pb pour installer teleinfo sur jeedom v4.4. Apparemment ça parle d’environnement géré en externe, je ne voispas ce que je peux faire pour ça. Je devrait passer par venv, ça réglerait peut être ce problème mais je n’ai pas le temps de m’y consacrer pour l’instant…

C’est pas à cause de la v4.4 mais la version de Debian 12 du fait du Python et du PHP 8

alors là… si tu peux m’indiquer comment régler ce pb que j’anticipe car je n’ai pas cette config

Pour le PHP c’est ce que j’ai indiqué pour les lignes 330 et 350.

Par contre je t’avoue que pour le Python si quelqu’un peux donner ou connais la « bonne » façon d’installer des packages en Python 3 ce serais une bonne chose, moi j’ai plutôt tous fais pour que ça fonctionne mais je ne suis pas certain que ce soit la bonne méthode.

Sinon c’est ce que j’ai indiqué plus haut à savoir :

pip3 install --force-reinstall --upgrade XXXX --break-system-packages avec XXXX pour les dépendances du plugin

A part pour pyserial qui existe mais qu’il s’appelle => python3-serial

ok mais pour les lignes 330 et 350 tu y as fait quoi car là je ne vois aucune différence avec les lignes d’origine

pardon, lu trop vite désolé. Ok ça marche

Ok ça marche :slight_smile:

Pour Python je pense qu’il y aura un sujet de tous façon il y a pas mal d’autre plugins dans le même cas, je suppose qu’il y aura surement une bonne âme pour affirmer ou confirmer une méthodo correcte pour le passage sous Debian 12

Il va falloir changer l’installation et utiliser pipx ou un venv explicite: [Debian12] Dépendances NOK - #2 par Mips

1 « J'aime »

Pour ma part, j’ai constaté le problème suivant :

0001|[2024-03-25 00:15:03] ERROR : Erreur sur teleinfo::calculateTodayStats() : Unsupported operand types: int * string

Visiblement, il est mélangé des entiers avec des chaînes de caractères dans le fichier teleinfo.class.php, ce qui n’est visiblement plus possible avec php8.
Le reste semble bien fonctionner sauf le fichier jeedom.py que je dois remplacer à chaque mise à jour et le venvpython qu’il a fallu que j’installe manuellement. Est-il prévu une bascule vers pyenv4Jeedom ?
Merci

Tu n’aurais pas un autre log qui indiquerait où est située l’erreur car il y a quand même pas mal de lignes de code…

Pour jeedom.py une modification est en cours et sera diffusée à la prochaine mise à jour.

Quand tu parles de venvpython tu le réinstalles toi même où tu mets à jour les dépendances ?

Oui pour pyenv4python mais là je n’ai pas le temps de m’y mettre

Salut,

Concernant python3 et les venv, il faut déjà voir si une version de Python spécifique (sous entendu une autre que celle incluse dans le système) est nécessaire.

Si la version de Python du système est suffisante, cela simplifie les choses, et alors passer en Venv l’environnement, c’est quelques lignes dans le script d’installation, pas besoin de se compliquer la vie.

Certains plugins utilisent déjà cette méthode (venv) dans leur script d’installation (tu peux regarder par exemple le plugin plugin-ttscast ) , et je vais faire un post a l’occasion pour en parler (pas que de ça, mais cela en fera parti).

A dispo pour échanger sur le sujet,

Bonne journée
TiTidom.

teleinfo tourne déjà avec venv depuis une des dernières mise à jour. Cela me permet de bloquer certains modules dans une version compatible avec le code.

Utiliser Pyenv4jeedom c’est autre chose, cela permet de mettre la version de python que tu souhaites pour être compatible avec certains modules qui demandent une certaine version pour pouvoir fonctionner.

Bonjour
Pour le moment si vous êtes en debian 12 tous ce qui est plugin python ne marchera pas si ils utilisent le système de package du core. Ça sera bien évidement corrigé dans les futur version du core. Pour info si vous regardez les issue du répo core vous pouvez suivre l’avancement sur ce soucis

1 « J'aime »

Hello,

C’est bien de cela dont je parlais entre autre (mais je me suis sans doute mal exprimé :stuck_out_tongue: ) mais sans plugin additionnel pour ma part.

Bonne journée,
TiTidom.

ok je comprends mieux, tu parlais donc de pyenv :wink:

1 « J'aime »

il faudra à minima utiliser un environnement virtuel?

Oui bien sur, pourquoi ?

pour être certain d’avoir bien compris :wink:

Pas plus de détail de log disponible, malheureusement (le détail de la ligne qui pose problème aurait facilité les choses, mais Jeedom est assez peu dissert).
Concernant venvpython, j’ai dû l’installer en ligne de commande, la mise à jour des dépendances n’ayant visiblement pas fonctionné.