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.