Je n’ai pas fais d’apt update, c’est fait exprès.
akenad
Je n’ai pas fais d’apt update, c’est fait exprès.
akenad
Hello,
Pour l’Odroid C2 installé il y a peu :
root@odroidc2:~# pip --version
pip 20.0.2 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
root@odroidc2:~# python --version
Python 2.7.16
Si jamais, je peux re installer l’Odroid C2 et retester les versions après installation du script Jeedom.
Comme indiqué dans le topic cité dans le premier post, au début d’année, sur une installation dans une VM avec Debian Buster, aucun souci de ce type constaté.
D’où ma question s’il y a eu du changement entre temps dans les scripts.
Quand cela m’était arrivé, je me suis dit que c’était à cause de mon OS mais vu que sur Smart, l’autre utilisateur a eu le même souci, j’ai remonté l’info.
Voilà, là t’es pile dans le soucis. Un pip par défaut qui correspond à python 3, alors que le python par défaut est la V2.
Il n’y a pas de corrélation entre les 2.
Si tu peux réinstaller et vérifier avant installation jeedom, et ensuite après install jeedom.
Pourtant j’ai rien vu de flagrant dans le script d’install Jeedom, donc à moins que ce soit la distribution qui a une merde dans un paquet.
Oui je sais que c’est un problème de corrélation entre les deux. C’est ce que j’indiquais dans l’autre post (bon, j’ai parlé de « couple » en fait ).
Je vais faire l’essai.
Re,
Etape par étape après installation de l’Odroid C 2 (Armbian Buster 5.4.21)
Fresh install :
root@odroidc2:~# pip --version
Command 'pip' not found, but can be installed with:
apt install python-pip
root@odroidc2:~# python --version
Command 'python' not found, but can be installed with:
apt install python-minimal
You also have python3 installed, you can run 'python3' instead.
root@odroidc2:~# python3 --version
Python 3.7.3
Après update && upgrade, même version.
Après lancement du script install.sh :
root@odroidc2:~# pip --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
root@odroidc2:~# python --version
Python 2.7.16
Donc là, on est bon.
J’ai ensuite installé plugin par plugin et testé :
root@odroidc2:~# pip --version && python --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
Python 2.7.16
Au lancement du plugin Xiaomi (oui, je dérive sur le plugin…) :
[2020-03-10 12:30:05][INFO] : Lancement démon xiaomihome : /usr/bin/python /var/www/html/plugins/xiaomihome/resources/xiaomihomed/xiaomihomed.py --loglevel debug --socketport 55019 --callback http://127.0.0.1:80/plugins/xiaomihome/core/php/jeeXiaomiHome.php --apikey xxx --cycle 0.05 --pid /tmp/jeedom/xiaomihome/deamon.pid
Traceback (most recent call last):
File "/var/www/html/plugins/xiaomihome/resources/xiaomihomed/xiaomihomed.py", line 26, in <module>
import globals
File "/var/www/html/plugins/xiaomihome/resources/xiaomihomed/globals.py", line 3, in <module>
from devices.yeelight.flow import *
File "/var/www/html/plugins/xiaomihome/resources/xiaomihomed/devices/yeelight/__init__.py", line 7, in <module>
from .main import Bulb, BulbException, discover_bulbs
File "/var/www/html/plugins/xiaomihome/resources/xiaomihomed/devices/yeelight/main.py", line 10, in <module>
from future.utils import raise_from
ImportError: No module named future.utils
[2020-03-10 12:30:35][ERROR] : Impossible de lancer le démon xiaomihomed. Vérifiez le log.
Au niveau des logs des dépendances :
Downloading future-0.18.2.tar.gz (829 kB)
Building wheels for collected packages: future
Building wheel for future (setup.py): started
Building wheel for future (setup.py): finished with status 'done'
Created wheel for future: filename=future-0.18.2-py3-none-any.whl size=491058 sha256=xxxxxx
Stored in directory: /root/.cache/pip/wheels/56/b0/fe/xxxxxx
Successfully built future
Installing collected packages: future
Successfully installed future-0.18.2
Si je regarde l’emplacement du module future :
root@odroidc2:~# find / -name *future*.so
/usr/lib/python2.7/lib-dynload/future_builtins.aarch64-linux-gnu.so
Si j’installe manuellement le paquet python-future, je me retrouve dans le cas de l’utilisateur de l’autre post avec l’erreur :
ImportError: No module named Crypto.Cipher
Par contre le couple pip/python est toujours OK :
root@odroidc2:~# pip --version && python --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
Python 2.7.16
Après un :
pip2 install pycrypto
Ensuite, le démon démarre et toujours :
root@odroidc2:~# pip --version && python --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
Python 2.7.16
Pour ma part, entre la dernière installation et celle-ci, j’avais effectué pas mal de tests.
Donc j’ai peut-être merdé sur un truc.
Je me suis permis de remonter l’info sur l’autre post car l’autre utilisateur avait une Smart (et donc un truc officiel à 100% contrairement à moi).
Sachant que j’avais réalisé une installation de Debian Buster sur une VM et que je n’avais pas eu ce souci, je me suis permis de remonter l’information au cas où une modification aurait été faites.
Oui, et moi j’ai évoqué une « inconsistance » entre Python 2 et 3 ici : Tout semble bon... mais (Sinon ce ne serait pas drôle) - #20 par akenad
akenad
tu peux faire ? :
# pip3 --version
# python3 --version
# whereis pip3
akenad
Yes! Voilà :
root@odroidc2:~# pip3 --version && python3 --version && whereis pip3
pip 20.0.2 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
Python 3.7.3
pip3: /usr/bin/pip3 /usr/local/bin/pip3.7 /usr/local/bin/pip3 /usr/share/man/man1/pip3.1.gz
ce qui est dommage c’est que tu n’as pas fais de pip3 --version au début, du coup on ne sait pas si c’est l’image ou Jeedom qui l’a installé.
akenad
dans le pip list que j’ai envoyé hier il y a « futures »
dans l’installation des dépendances du plugin xiaomihome :
if [ $(pip list | grep future | wc -l) -eq 0 ]; then
echo "Installation du module future pour python"
sudo pip install future
fi
à un « s » près ça aurait pu le faire.
akenad
mise à jour du tableau faisant apparaitre « future » et « futures » :
Remarque : l’Odroid-C2 Armbian Buster à « futures » donc actuellement le plugin xiaomihome ne va pas installer « future ».
plus généralement, on constate 10.0 n’a pas « futures » et 10.2 l’a.
@Kyoshi,
tu peux faire sur ton odroid-C2 un ? :
pip list | grep future
c’est quoi comme « Version OS »
akenad
Voilà chef!
root@odroidc2:~# pip list | grep future
future 0.16.0
@akenad j’ai que future chez moi, tu peux faire le test avec :
pip list | grep "future "
pour voir si juste ca, ca dupera la bête
Cool, donc l’arnaque marche, c’est ajouté déjà
Mais bon, ca explique pas tout le reste
non mais cela solutionne le présent sujet dans les cas standards.
dans le cas ou les jeedomiens commencent à faire de l’install « wild wild » sur du pip pip2 pip3 c’est une autre affaire.
akenad
Oui, mais regarde ca :
C’est pas un user qui fait des trucs bizarre, il a une instance nouvelle sur freebox. Mais sauf que y a un mismatch, donc même avec ma gruge pas sur que ca marche (je sais meme pas si il a futures)
Bon, si cela permet déjà d’éviter des problèmes à certaines utilisateurs, c’est déjà ça de pris.
D’autres tests à faire? Sans faire d’install « wild wild » cette fois-ci
toujours preneur pour ton Odroid-C2 de « Version OS » sur page santé Jeedom
akenad
Oui, j’ai déjà vu ce post.
L’image de la VM Jeedom Delta (Buster) date du 08/10/2019 et il n’y en a pas eu d’autres.
Pour moi la spécificité ce n’est pas que ce soit de l’arm64 mais que c’est une image incluant une install de jeedom à un instant t, alors que dans tous les autres cas d’usage il s’agit d’une install des différentes dérivées de debian suivi de l’install.sh de jeedom qui a été modifié depuis octobre.
ce serait interessant d’avoir « Version OS » de la page santé de la VM Jeedom Delta
une buster 10.0 a un pip version de 18.1 au départ (les versions de pip, pip2, pip3 sont identiques)
actuellement un
# pip install --upgrade pip
# pip3 install --upgrade pip
les fait passer en 20.0.2 mais les répertoires sur lesquels il pointent ne sont plus les mêmes.
$ su -
# pip --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
# pip3 --version
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
# pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% 1.4MB 194kB/s
Installing collected packages: pip
Found existing installation: pip 18.1
Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-20.0.2
# pip3 install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 18.1
Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-20.0.2
# pip --version
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.0.2 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
# pip3 --version
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.0.2 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
# python -m pip --version
pip 20.0.2 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
# python3 -m pip --version
pip 20.0.2 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
l’exemple que tu donnes de la VM Jeedom Delta est pip 19.3.1 (pip pointe sur python3)
l’exemple de l’Odroid-C2 de @Kyoshi est pip 20.0.2
D’autre part j’avais compris qu’il était prévu qu’un jour pip ne pointe plus par défaut sur python2 mais python3. Il faut s’attendre à ce que ça arrive un jour.
j’ai pris une autre VM pour faire un autre essai en changeant de méthode : (python -m pip install au lieu de pip install)
$ su -
# python3 -m pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
100% 1.4MB 63kB/s
Installing collected packages: pip
Found existing installation: pip 18.1
Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-20.0.2
# python3 -m pip --version
pip 20.0.2 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
# pip --version
pip 20.0.2 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
# python -m pip install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 18.1
Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-20.0.2
# pip --version
pip 20.0.2 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
# python -m pip install --upgrade pip
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.
A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip,
can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Requirement already up-to-date: pip in /usr/local/lib/python2.7/dist-packages (20.0.2)
Remarques :
En résumé, il semble préférable d’utiliser :
$ sudo python -m pip install module
$ sudo python3 -m pip install module
plutôt que :
$ sudo pip install module
$ sudo pip3 install module
ce qui pourrait donner :
if [ $(python -m pip list | grep "future " | wc -l) -eq 0 ]; then
echo "Installation du module future pour python"
sudo python -m pip install future
fi
akenad