Fügen Sie diese Eigenschaft zu [Service]
hinzu Abschnitt, um sicherzustellen, dass systemd
als angegebener Benutzer ausführen.
User=pi
Siehe die Lösung von AndyD.
Die wahrscheinlichste Erklärung ist, dass Sie einige Umgebungsvariablen gesetzt haben (z. B. eine Erweiterung Ihres PYTHONPATH?), die nicht gesetzt sind, wenn das Skript von systemd ausgeführt wird.
Sie könnten versuchen, den Environment-Parameter (siehe [0]) zu verwenden, also setzen Sie PYTHONPATH (und was auch immer sonst dies beeinflussen könnte) auf das, was es in Ihrer Konsolensitzung ist.
[0] http://0pointer.de/public/systemd-man/systemd.exec.html#Environment=
systemd
läuft als root. Die über pip
installierten Module werden für einen Benutzer und nicht für das System installiert, und daher machte die Installation der Module ohne Root-Rechte den Zugriff auf die Module für Root unzugänglich.
Um dies zu lösen, habe ich sudo -H pip install zmq
ausgeführt und sudo -H pip3 install zmq
um die Pakete für Python 2.7 und Python 3+ für root zu installieren. Dies erlaubte systemd
um auf die Module zuzugreifen, sobald versucht wird, das Python-Skript auszuführen.