Avoir accès à une bibliothèque python

Bonjour,
En utilisant le plugin script, j’ai installé un fichier testPython.py

Il contient un appel à une bibliothèque (from pytapo import Tapo :

# !/usr/bin/env python3

from pytapo import Tapo
user="xxxxx"
password="xxxxxxxxxxxxx"
host="192.168.1.xx"
tapo2=Tapo(host, user, password)
res=tapo2.moveMotor(-10,0)

Mais lorsque je le lance via le « tester » à droite de la commande,
image
J’ai ce message qui montre qu’il n’a pas trouvé la bibliothèque :
image

Le script python fonctionne lorsque je le lance via puTTy en tant qu’utilisateur pi sur le pi qui héberge jeedom :
via
sudo python3 /var/www/html/plugins/script/data/testPython.py

Le sudo n’est nécessaire que parce-que pi n’a pas les droit en lecture sur ce fichier qui se trouve « chez jeedom ». Le même fichier python mis « chez pi » se lance sans problème sans le sudo.

Bref, comment, dans un script python lancé via le plugin script, faire en sorte qu’il ait accès à une certaine bibliothèque ?

Quelques infos supplémentaires :
Installation classique de jeedom sur un pi4. Tout est mis à jour et donc dernière version de jeedom et du plugin.
L’installation de la bibliothèque en question a été faite par un

python3 -m pip install pytapo

Puis, j’ai aussi testé en faisant un

sudo python3 -m pip install pytapo
1 « J'aime »

Bonjour,

Par défaut, en tout cas jusqu’à buster inclu, les script python sont exécuté avec python2 et pas python3 (même avec l’en-tête dans le script).
Le plug-in se base sur l’extension du fichier qui est donc .py en miniscule.
Voilà pourquoi votre script ne tourne pas et pourquoi vos libs ne sont pas trouvées.

Mettez .PY en majuscule et cela devrait fonctionner.

Pour info, sujet plusieurs fois posé et résolu sur community :wink:

1 « J'aime »

Effectivement, merci @Mips cela a résolu une partie du problème.

Mais du coup, j’ai eu ce message :
image
Je pense qu’il ne lançait toujours pas le bon python car si sous putty si je faisais
sudo /var/www/html/plugins/script/data/testPython.PY
J’avais le même message (mon fichier avait bien été mis en exécutable via un chmod).

Alors que, toujours sous putty, si je faisais pareil mais en plaçant un python3 devant :
sudo python3 /var/www/html/plugins/script/data/testPython.PY
Ca marchait.

Du coup, j’ai créé un fichier batch (/var/www/html/plugins/script/data/shlancepython.sh) qui contenait
python3 /var/www/html/plugins/script/data/testPython.PY

Et c’est ce fichier batch que je lance via jeedom

Et là en faisant
image
ça marche !

Une idée pour ne pas être obligé de passer par un batch ?
Comment faire pour que si on met .PY comme extension, il lance effectivement python3

PS : je suis en linux version 10 (Buster)

Bonjour,
La première ligne (shebang) de votre script python n’est pas correcte.
Il ne faut pas d’espace entre le # et !

#!/usr/bin/env python3
2 « J'aime »

Bravo ! effectivement, comme ça ça marche !
J’avais fait bêtement un copier coller d’un code trouvé dans un autre message.

Merci !

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.