Pb pour un lancer un service avec systemctl

Salut,
Voilà j’ai un pb avec systemctl et un service qui ne fonctionne pas. J’utilise raspbian bullseye.
Je suis plutôt débutant sur linux.
Voilà la structure de mon fichier .service

[Unit]
Description=RFLinkGateway
After=multi-user.target
Conflicts=getty@tty1.service

[Service]
Type=simple
WorkingDirectory=/opt/scripts/RFLinkGateway
# Set correct path
ExecStart=/bin/python3 /opt/scripts/RFLinkGateway/RFLinkGateway.py
user=root
User=root

[Install]
WantedBy=multi-user.target

lorsque je lance mon programme RFLinkGateway.py de mon dossier où se trouve mes fichiers de config. Cela fonctionne : trace ci-dessous

pi@raspberrypi:/opt/scripts/RFLinkGateway $ /bin/python3 /opt/scripts/RFLinkGateway/RFLinkGateway.py
2024-01-22 08:28:16,203 - RFLinkGW.SerialProcessing - __init__ - INFO - Starting...
2024-01-22 08:28:16,209 - RFLinkGW.SerialProcessing - connect - INFO - Connecting to serial
2024-01-22 08:28:17,218 - RFLinkGW.SerialProcessing - connect - DEBUG - Serial connected
2024-01-22 08:28:17,243 - RFLinkGW.MQTTClient - __init__ - INFO - Starting...
2024-01-22 08:28:18,170 - RFLinkGW.SerialProcessing - prepare_output - DEBUG - Received message:['20', '00', 'Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R48']

Si je le lance avec systemctl, voilà le résultat :

pi@raspberrypi:/opt/scripts/RFLinkGateway $ sudo systemctl status RFLinkGateway.service
● RFLinkGateway.service - RFLinkGateway
     Loaded: loaded (/lib/systemd/system/RFLinkGateway.service; enabled; vendor pres>
     Active: failed (Result: exit-code) since Mon 2024-01-22 08:39:58 GMT; 10s ago
    Process: 12181 ExecStart=/bin/python3 /opt/scripts/RFLinkGateway/RFLinkGateway.p>
   Main PID: 12181 (code=exited, status=1/FAILURE)
        CPU: 1.370s

Jan 22 08:39:57 raspberrypi systemd[1]: Started RFLinkGateway.
Jan 22 08:39:58 raspberrypi python3[12181]: Traceback (most recent call last):
Jan 22 08:39:58 raspberrypi python3[12181]:   File "/opt/scripts/RFLinkGateway/RFLin>
Jan 22 08:39:58 raspberrypi python3[12181]:     import tornado.gen
Jan 22 08:39:58 raspberrypi python3[12181]: ModuleNotFoundError: No module named 'to>
Jan 22 08:39:58 raspberrypi systemd[1]: RFLinkGateway.service: Main process exited, >
Jan 22 08:39:58 raspberrypi systemd[1]: RFLinkGateway.service: Failed with result 'e>
Jan 22 08:39:58 raspberrypi systemd[1]: RFLinkGateway.service: Consumed 1.370s CPU t>

Hors lorsque je lance python3, j’ai bien tornado de présent :

pi@raspberrypi:/ $ python3
Python 3.9.2 (default, Mar 12 2021, 04:06:34) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tornado
>>> 

Quelle serait mon erreur ?
Merci
Eric

Bonjour,

Tu as un problème de chargement de module semble-t-il.
As-tu réussi à faire cette connexion manuellement?

Merci pour la réactivité :wink:
Si par module c’est l’importation du module tornado de python3. Ma réponse est oui et j’arrive bien à importer import tornado.gen avec python3.
Pour preuve, c’est lorsque je lance mon prog python à la mano, ça fonctionne

Bonjour,
Peut être un souci avec le chemin absolu de ton interpréteur python.
Ce ne serait pas plutôt /usr/bin/python3 ?
Tu peux le vérifier avec which python3

C’était bien vu, effectivement l’interpréteur python3, c’est /usr/bin/python3 lorsque que je lance la commande which python3.
Par contre malgré la modification et un daemon-reload toujours la même erreur :

● RFLinkGateway.service - RFLinkGateway
     Loaded: loaded (/lib/systemd/system/RFLinkGateway.service; enabled; vendor preset: e>
     Active: failed (Result: exit-code) since Mon 2024-01-22 12:00:05 GMT; 6s ago
    Process: 14319 ExecStart=/usr/bin/python3 /opt/scripts/RFLinkGateway/RFLinkGateway.py>
   Main PID: 14319 (code=exited, status=1/FAILURE)
        CPU: 1.452s

Jan 22 12:00:04 raspberrypi systemd[1]: Started RFLinkGateway.
Jan 22 12:00:05 raspberrypi python3[14319]: Traceback (most recent call last):
Jan 22 12:00:05 raspberrypi python3[14319]:   File "/opt/scripts/RFLinkGateway/RFLinkGate>
Jan 22 12:00:05 raspberrypi python3[14319]:     import tornado.gen
Jan 22 12:00:05 raspberrypi python3[14319]: ModuleNotFoundError: No module named 'tornado'

??

Pour info, j’ai solutionné mon pb avec
sudo chmod -R o+rx /usr/local/lib/python3.9
Donc ce serait un pb de droit, étrange, mais aprés ce changement de droit ds le répertoire pip3, ça fonctionne.

La bonne façon de faire aurait été de créer un environnement virtuel où tu installes tes dépendances et utiliser l’interpréteur python de cet environnement…

1 J'aime

Un question, pourquoi ne pas utiliser le python de la distribution et ajouter un python manuellement?

Je ne comprends pas ta question. Tu demandes pourquoi utiliser un environnement virtuel?

Non :

Ce n’est pas une installation par les paquets debian il me semble?

Ok je croyais que tu réagissais à ma réponse précédente… d’ou mon incompréhention