Problème de python future sur les installs arm64

Je n’ai pas fais d’apt update, c’est fait exprès.

akenad :slight_smile:

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 :smiley: ).

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 :slight_smile:

tu peux faire ? :

# pip3 --version
# python3 --version
# whereis pip3

akenad :slight_smile:

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 :slight_smile:

@lunarok,

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 :slight_smile:

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 :slight_smile:

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

1 « J'aime »

akenad :slight_smile:

Cool, donc l’arnaque marche, c’est ajouté déjà :slight_smile:
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 :slight_smile:

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 :smiley:

toujours preneur pour ton Odroid-C2 de « Version OS » sur page santé Jeedom

akenad :slight_smile:

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 :

  • j’ai provoqué pip pointant sur python3 et ensuite rétabli la situation.
  • un message dit que python 2.7 est mort depuis le début de l’année.

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 :slight_smile: