GNU/Linux >> Tutoriels Linux >  >> Linux

L'exécution du script Python via systemd ne parvient pas à charger le module

Ajouter cette propriété à [Service] section pour vous assurer que systemd exécuter en tant qu'utilisateur spécifié.

User=pi

Reportez-vous à la solution d'AndyD.


L'explication la plus probable est que certaines variables d'environnement sont définies (par exemple, une extension de votre PYTHONPATH ?) qui ne sont pas définies lorsque le script est exécuté par systemd.

Vous pouvez essayer d'utiliser le paramètre Environment (voir [0]) afin de définir PYTHONPATH (et tout ce qui pourrait influencer cela) sur ce qu'il est dans votre session de console.

[0] http://0pointer.de/public/systemd-man/systemd.exec.html#Environment=


systemd s'exécute en tant que root. Les modules installés via pip sont installés pour un utilisateur plutôt que pour le système et donc l'installation des modules sans privilèges root a rendu les modules inaccessibles pour root.

Pour résoudre ce problème, j'ai exécuté sudo -H pip install zmq et sudo -H pip3 install zmq pour installer les packages pour Python 2.7 et Python 3+ pour root. Cela a permis systemd pour accéder aux modules une fois qu'il tente d'exécuter le script Python.


Linux
  1. Empêcher un script bash de s'exécuter simultanément

  2. Vérifier qu'un script est en cours d'exécution ?

  3. Prendre une capture d'écran via un script Python sous Linux

  4. Exécuter un script shell en parallèle

  5. Exécuter le script Python via crontab

Comment charger ou décharger un module du noyau Linux

Comment exécuter un script Python en PHP

Comment configurer l'exécution automatique d'un script Python à l'aide de Systemd

Exécution de notify-send en tant que root

Nohup pour le script Python ne fonctionne pas lors de l'exécution en arrière-plan avec &

Exécuter Pycharm en tant que root depuis le lanceur