Les dépendances restent NOK

Salut

Je tente d’installer le plugin webostv sur une fresh install en VM x86 jeedom v4.3.10 buster.
J’ai fait la maj apt update + upgrade, ca ne change rien.
Après install les dependances du plugin sont NOK pourtant pas d’erreur à signaler sauf un warning cf log.
J’ai vu plusieurs sujets similaires sur le forum mais ca commence a dater et c’est pas exactement le même cas.

********************************************************
*             Installation des dépendances             *
********************************************************
10
***** Commande: sudo apt-get update **********
Atteint :1 http://security.debian.org/debian-security buster/updates InRelease
Atteint :2 http://ftp.fr.debian.org/debian buster InRelease
Atteint :3 http://ftp.fr.debian.org/debian buster-updates InRelease
Lecture des listes de paquets…
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
net-tools est déjà la version la plus récente (1.60+git20180626.aebd88e-1).
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
/var/www/html/plugins/webosTv/3rdparty/LGWebOSRemote/setup.py found.
running install
running bdist_egg
running egg_info
writing requirements to LGTV.egg-info/requires.txt
writing LGTV.egg-info/PKG-INFO
writing top-level names to LGTV.egg-info/top_level.txt
writing dependency_links to LGTV.egg-info/dependency_links.txt
reading manifest file 'LGTV.egg-info/SOURCES.txt'
writing manifest file 'LGTV.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/LGTV
copying build/lib.linux-x86_64-2.7/LGTV/__init__.py -> build/bdist.linux-x86_64/egg/LGTV
byte-compiling build/bdist.linux-x86_64/egg/LGTV/__init__.py to __init__.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying LGTV.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying LGTV.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying LGTV.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying LGTV.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying LGTV.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
LGTV.__init__: module references __file__
creating 'dist/LGTV-0.1.2-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing LGTV-0.1.2-py2.7.egg
removing '/usr/local/lib/python2.7/dist-packages/LGTV-0.1.2-py2.7.egg' (and everything under it)
creating /usr/local/lib/python2.7/dist-packages/LGTV-0.1.2-py2.7.egg
Extracting LGTV-0.1.2-py2.7.egg to /usr/local/lib/python2.7/dist-packages
LGTV 0.1.2 is already the active version in easy-install.pth

Installed /usr/local/lib/python2.7/dist-packages/LGTV-0.1.2-py2.7.egg
Processing dependencies for LGTV==0.1.2
Searching for wakeonlan==0.2.2
Best match: wakeonlan 0.2.2
Processing wakeonlan-0.2.2-py2.7.egg
wakeonlan 0.2.2 is already the active version in easy-install.pth
Installing wol script to /usr/local/bin

Using /usr/local/lib/python2.7/dist-packages/wakeonlan-0.2.2-py2.7.egg
Searching for ws4py==0.5.1
Best match: ws4py 0.5.1
Processing ws4py-0.5.1-py2.7.egg
ws4py 0.5.1 is already the active version in easy-install.pth

Using /usr/local/lib/python2.7/dist-packages/ws4py-0.5.1-py2.7.egg
Finished processing dependencies for LGTV==0.1.2
Collecting wakeonlan==0.2.2
  Using cached wakeonlan-0.2.2-py3-none-any.whl
Installing collected packages: wakeonlan
  Attempting uninstall: wakeonlan
    Found existing installation: wakeonlan 0.2.2
    Uninstalling wakeonlan-0.2.2:
      Successfully uninstalled wakeonlan-0.2.2
Successfully installed wakeonlan-0.2.2
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
********************************************************
*                 Installation terminée                *
********************************************************

root@jeedom> pip --version
pip 22.3.1 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)

A noter que j’ai déjà le plugin qui fonctionne sans problemes sur mon Pi3b+ de prod en v4.2.21 sous buster aussi:

pi@rpi> pip --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)

Je n'ai plus la log de l'install et j'hésite à relancer pour éviter de tout casser... 
Merci

Bonjour,

Pour commencer, on ne met pas de mot entre crochet dans le sujet du message; il a les tags pour ca.

Concernant le problème, la version de pip est incorrecte; pip doit être lié a python2 et pas python3 soud peine d’avoir des problèmes avec les plugins utilisant encore python2.

C’est peut-être le cas ici, aucune idée de quelle version ce plugin utilise mais cela expliquerait pq il considère les dépendances NOK.

Donc commencez par réinstaller la bonne version de pip. Il existe plusieurs sujet qui en parlent déjà.

Justement c’est mon point:
C’est une fresh install à partir de l’iso jeedom v4.3, j’ai juste faire un apt upgrade après quoi /usr/local/bin/pip est une copie de pip3. Pour que ca marche j’ai du le remplacer par un lien symbolique vers /usr/bin/pip

Bizarrement /usr/local/python correspond bien à la v2.7
Problème à moitié résolu donc…

salut rootard
juste pour comprendre c’est les dépendances qui ne s’installent pas ?
car pour moi c’est le cas avec une erreur pip voir log ci-dessous

********************************************************
*             Installation des dépendances             *
********************************************************
Collecting git+https://github.com/Lawouach/WebSocket-for-Python.git
Cloning https://github.com/Lawouach/WebSocket-for-Python.git to /tmp/pip-req-build-zi79wktj
Running command git clone --filter=blob:none --quiet https://github.com/Lawouach/WebSocket-for-Python.git /tmp/pip-req-build-zi79wktj
Resolved https://github.com/Lawouach/WebSocket-for-Python.git to commit XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Requirement already satisfied: wakeonlan in /usr/local/lib/python3.7/dist-packages (2.1.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
********************************************************
*             Installation terminée                    *
***********************************************

Vos dépendances sont installées et il n’y a aucune erreur dans votre log.

Par contre elles sont installées sous python3 et me plugin semble avoir besoin de python2.

Justement plusieurs plugins dont celui la ne fonctionnent plus quand on upgrade buster car le pip par défaut est maintenant pip3. Réinstaller python2 par dessus n’est qu’un workaround. Ca sera encore le cas avec bullseye donc ca ne va pas s’arranger…il faut demander aux dev de migrer

Par contre je ne m’explique pas pourquoi les liens par defaut de pip et de python n’etaient pas alignés chez moi…

J’ai fait mes mis à jour buster et pip n’a pas bougé, je n’ai pas l’impression que le problème vient de là.

c’est un problème très classique, cela se produisait déjà sous stretch.

le problème est dû à la façon de faire l’upgrade de pip.

pour forcer l’install de pip liée à python2 ceci devrait fonctionner:

sudo python2 -m pip install --upgrade --force pip

edit:

Non ce n’est pas un workaround et le problème n’est pas le même avec bullseye, où le problème va juste disparaitre d’ailleurs.

Ce n’est pas un workaround car python lui est bien lié à python2 donc pip doit l’être aussi pour garder les deux alignés.
sous bulleyes python est bien sur python3 (et python2 n’existe plus)

1 « J'aime »

merci pour ta réponse mais si j’installe python 2, tous les plug-in qui fonctionnent sur python 3 ne fonctionnerons plus ?

Pas du tout. Et cette commande n’installe pas python2, celui-ci est déjà installé sur votre système

bon j’ai essayé avec

Citation sudo python2 -m pip install --upgrade --force pip

le problème est toujours le même , il me semble que cela va plus loin que la première fois de 10 à 50% mais impossible d’installer les dépendances voir le résultat sur debug, si tu as une idée ?.. merci

********************************************************
*             Installation des dépendances             *
********************************************************
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Collecting git+https://github.com/Lawouach/WebSocket-for-Python.git
  Cloning https://github.com/Lawouach/WebSocket-for-Python.git to /tmp/pip-req-build-P8fBP7
  Running command git clone -q https://github.com/Lawouach/WebSocket-for-Python.git /tmp/pip-req-build-P8fBP7
Building wheels for collected packages: ws4py
  Building wheel for ws4py (setup.py): started
  Building wheel for ws4py (setup.py): finished with status 'done'
  Created wheel for ws4py: filename=ws4py-0.5.1-py2-none-any.whl size=41374 sha256=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Stored in directory: /tmp/pip-ephem-wheel-cache-c6L3Uw/wheels/99/1f/0d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Successfully built ws4py
Installing collected packages: ws4py
  Attempting uninstall: ws4py
    Found existing installation: ws4py 0.5.1
    Uninstalling ws4py-0.5.1:
      Successfully uninstalled ws4py-0.5.1
ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.
lgtv 0.1.2 requires wakeonlan==0.2.2, but you'll have wakeonlan 1.1.6 which is incompatible.
Successfully installed ws4py-0.5.1
WARNING: You are using pip version 20.3.4; however, version 22.3.1 is available.
You should consider upgrading via the '/usr/bin/python2 -m pip install --upgrade pip' command.
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Requirement already up-to-date: wakeonlan in /usr/local/lib/python2.7/dist-packages (1.1.6)
WARNING: You are using pip version 20.3.4; however, version 22.3.1 is available.
You should consider upgrading via the '/usr/bin/python2 -m pip install --upgrade pip' command.
********************************************************
*             Installation terminée                    *
********************************************************

Non le problème est radicalement différent. A présent il essaie bien d’installer les dépendances sous python2.

Par contre il y a un conflit entre différentes versions de différentes libs

ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.
lgtv 0.1.2 requires wakeonlan==0.2.2, but you'll have wakeonlan 1.1.6 which is incompatible.

du coup je suppose que lgtv n’est pas installé. par contre là je ne sais pas aider, n’ayant pas ce plugin aucune idée de quelle version fonctionne ou pas.

Il faudrait comparer avec les versions de lgtv & wakeonlan sur une install fonctionnelle

merci mips, je vais ouvrir un autre fil de discussion pour essayer de résoudre ce problème
cdt cari

Bonjour j’avais un problème similaire après une réinstallation.
La recommendation de @Mips (pro forcer l’install de pip liée à python2) a resolu le problème. Merci !

1 « J'aime »

Bonjour,

Python2 et Python3 étant depuis longtemps largement utilisés conjointement, ne suffirait-il pas que les developpeurs de plugin utilisant python 2 changent leurs appels à python en utilisant la commande python2 plutot que python tout cours?
En effet, sur les dernieres versions de debian, python utilise python3, et non plus python2.
Ca permettrait de ne plus avoir de regression à chaque installation de nouveaux plugin utilisant python. Non? Surtout que python2 est deprecié depuis 2020 :wink:

normalement, il y a venv pour ça.

https://python-guide-pt-br.readthedocs.io/fr/latest/dev/virtualenvs.html

Oui, aussi…

Oui et non en fait.
Oui : ca me semble être la meilleure facon d’installer plusieurs versions de Python/pip sans que ce soit dépendant du user, des versions, etc…
Mais non, ca ne règle pas le problème des plugins qui :

  1. installent (et cassent) python (2 ou 3) selon leur besoin
  2. utilisent python avec la commande par défaut (python monscript.py) sans savoir (ni préciser) de quelle version il s’agit

D’ou ma proposition, de modifier les plugin pour préciser python2 ou python3
Je viens de passer 1h a comprendre pourquoi la version specifique du module cryptography nécessaire à certains plugin n’était pas prise en compte après que je l’ai installée :
car « pip install xxx » n’est pas équivalent à « sudo pip install xxx » car ca ne s’installe pas au bon endroit! (et la, je pense qu’une install en venv serait une bonne chose).

Pour aller plus loin avec les désynchro python2 <> pytthon3 et pip2<>pip3 (parce qu’il est possible que python soit toujours = à python2 alors que pip soit lié à pip3 => d’où les soucis comme avec crypto), il est préférable selon moi de faire python3 -m pip install xxx que pip3 install xxx a moins on est sur de la version.

et pour tout complexifier, dans quelques mois on va avoir une série de post sur community au fur et à mesure que les install bullseye se généraliseront car sur debian11 python=python3 et pour avoir python2 il faut le préciser explicitement (donc inverse que sous debian10) …

Oui, mais pas que.
Dans mon cas, j’avais 2 versions de pip2 : une dans le home de mon user avec lequel je me connecte en SSH, et une différente quand je lance pip2 avec sudo!
C’est une vraie plaie ces installs de python et pip…
Franchement, le plus étanche a mon avis, c’est d’installation python 2 et python 3 (et les versions de pip associés) dans des VENV comme l’indique Jeandhom.
Mais il faut aussi régler le problème des plugin qui l’installent dans les dépendances. Ca a vite fait de tout péter (vécu)

1 « J'aime »

Non, il n’y a qu’une version de pip/pip2/pip3 mais les lib installées avec ton user son dispo pour ton user uniquement alors que si installée avec sudo elles sont dispo pour tout le monde.

1 « J'aime »