WARNING: Error parsing requirements for idna: [Errno 2] No such file or directory: '/usr/local/lib/python3.7/dist-packages/idna-3.3.dist-info/METADATA'

Je veux partager une nuit de galère pour résoudre un problème d’installation des dépendances suite à la mise à jour de mes plugins et core. Ce n’est pas un post pour appeler au secours mais pour partager la résolution, pas nécessaire de me répondre…

Ma cofiguration en bref avant ma mise à jour :

  • RasperryPI3
  • Linux 5.10.63-v7+ #1488 SMP Thu Nov 18 16:14:44 GMT 2021 armv7l
  • host 9.11.5-P4-5.1+deb10u6-Raspbian
  • core jeedom 4.3.17 (…)
  • python 3.7
  • pip 24

Après une bonne sauvegarde, je décide mardi 27.02 de mettre à jour les quelques plugin qui étaient en retard. Une opération que je trouve toujours délicate. J’avais notamment une mise à jour openzwave, rfxcom et zigbee.

Les mises à jour openzwave et rfxcom s’étant bien passées, je me lance dans cette de zigbee et paf, la mise à jours des dépendances ne se passe pas bien…

Dans le log Zigbee_packages (/var/www/html/log/zigbee_packages)
Je trouve notamment ceci (pas forcement dans cet ordre)

WARNING: Error parsing requirements for certifi: [Errno 2] No such file or directory: ‹ /usr/local/lib/python3.7/dist-packages/certifi-2021.10.8.dist-info/METADATA ›
WARNING: Error parsing requirements for charset-normalizer: [Errno 2] No such file or directory: ‹ /usr/local/lib/python3.7/dist-packages/charset_normalizer-2.0.12.dist-info/METADATA ›
WARNING: Error parsing requirements for idna: [Errno 2] No such file or directory: ‹ /usr/local/lib/python3.7/dist-packages/idna-3.3.dist-info/METADATA ›
WARNING: Error parsing requirements for pyudev: [Errno 2] No such file or directory: ‹ /usr/local/lib/python3.7/dist-packages/pyudev-0.23.2.dist-info/METADATA ›
WARNING: Ignoring invalid distribution -equests (/usr/local/lib/python3.7/dist-packages)
ERROR: Cannot uninstall idna 3.3, RECORD file not found. You might be able to recover from this via: ‹ pip install --force-reinstall --no-deps idna==3.3 ›.

J’ai essayé pas mal de trucs. Je suis développeur, informatiticien mais sur des environnements old fashion (Oracle), qui marchent assez bien :grin:. C’est un peu pour ça que j’aime revenir sur le coeur de ces petits systèmes :blush:

On comprend clairement que ces erreurs proviennent d’une mise à jour de packages python, parfois non utilisés. Une manière de le vérifier (exemple pour package idna) :

sudo pip list

idna 3.3

sudo pip3 install --force-reinstall --no-deps idna==3.3
WARNING: Ignoring invalid distribution -equests (/usr/local/lib/python3.7/dist-packages)
Looking in indexes: Simple index, piwheels - Simple index
Collecting idna==3.3
Using cached https://www.piwheels.org/simple/idna/idna-3.3-py3-none-any.whl (64 kB)
Installing collected packages: idna
Attempting uninstall: idna
WARNING: No metadata found in /usr/local/lib/python3.7/dist-packages
Found existing installation: idna 3.3
ERROR: Cannot uninstall idna 3.3, RECORD file not found. You might be able to recover from this via: ‹ pip install --force-reinstall --no-deps idna==3.3 ›.

Je me rends comptes que pour tous ces packages,

  • il manque effectivement les fichiers METADATA
  • j’ai toujours une version plus récente idna-3.6 (pour le package idna) qui contient un METADATA

Vérification

ls /usr/local/lib/python3.7/dist-packages/idna-3.*
/usr/local/lib/python3.7/dist-packages/idna-3.3.dist-info:
LICENSE.md
/usr/local/lib/python3.7/dist-packages/idna-3.6.dist-info:
direct_url.json INSTALLER LICENSE.md METADATA RECORD REQUESTED WHEEL

Après quelques heures de recherches passionnantes (mise à niveau pip et pip3 qui sont les premières résolutions à essayer comme recommandé sur la doc jeedom), désepéré, à 3h du matin, je tente de casser ces versions obsolètes

sudo mv /usr/local/lib/python3.7/dist-packages/idna-3.3.dist-info /usr/local/lib/python3.7/dist-packages/idna-3.3.dist-info_OLD
sudo mv /usr/local/lib/python3.7/dist-packages/certifi-2021.10.8.dist-info /usr/local/lib/python3.7/dist-packages/certifi-2021.10.8.dist-info_OLD
sudo mv /usr/local/lib/python3.7/dist-packages/charset_normalizer-2.0.12.dist-info /usr/local/lib/python3.7/dist-packages/charset_normalizer-2.0.12.dist-info_OLD
sudo mv /usr/local/lib/python3.7/dist-packages/pyudev-0.23.2.dist-info /usr/local/lib/python3.7/dist-packages/pyudev-0.23.2.dist-info_OLD
sudo mv /usr/local/lib/python3.7/dist-packages/requests-2.28.2.dist-info /usr/local/lib/python3.7/dist-packages/requests-2.28.2.dist-info_OLD

Je suis presque content car pip affiche désormais la version à contenant le METADATA

sudo pip list

idna 3.6

Les warning disparaissent
et surtout…, il n’y a plus ces messages inquitant dans le Zigbee_pacakges
Mais…, les dépendances ne sont toujours pas intallées :unamused:

Je reprends après une courte nuit de sommeil, ma femme étant :triumph: car la domotique ne fonctionne plus bien…

Je tente la mise à jour du core, l’opération que j’aime le moins…
Passage core jeedom 4.3.17 à 4.3.23
Et :fireworks:, le problème d’installation des dépendances du plugin-zigbee est résolu !

Voilà, juste pour partager qu’il n’est sans doute pas toujours la peine de jouer à l’informaticien, la version 4.3.21 corrige un problème d’installation de certains plugin.

Une amélioration pour jeedom (notamment ce plugin officiel zigbee), pourrait être de signaler dans la release note qu’il faut passer la mise à jour core 4.3.21 en prérequis de la mise à jour du plugin zigbee :wink:

Tout cela pour un plugin obsolète, un passage au successeur aurait été probablement plus rapide et moina dangereux pour ton système.

Antoine