GNU/Linux >> Znalost Linux >  >> Linux

Spuštěním skriptu Python přes systemd se nepodařilo načíst modul

Přidejte tuto vlastnost do [Service] sekce, abyste se ujistili, že systemd spustit jako určený uživatel.

User=pi

Viz řešení AndyD.


Nejpravděpodobnějším vysvětlením je, že máte nastavené nějaké proměnné prostředí (např. rozšíření vašeho PYTHONPATH?), které nejsou nastaveny, když skript spouští systemd.

Můžete zkusit použít parametr Environment (viz [0]), takže nastavte PYTHONPATH (a cokoli jiného, ​​co by to mohlo ovlivnit) na cokoliv, co je ve vaší konzolové relaci.

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


systemd běží jako root. Moduly nainstalované pomocí pip jsou instalovány pro uživatele, nikoli pro systém, a tak instalace modulů bez oprávnění root způsobila, že moduly jsou pro roota nedostupné.

Abych to vyřešil, spustil jsem sudo -H pip install zmq a sudo -H pip3 install zmq nainstalovat balíčky pro Python 2.7 a Python 3+ pro root. To umožnilo systemd pro přístup k modulům, jakmile se pokusí spustit skript Python.


Linux
  1. Zabránění souběžnému spuštění bash skriptu

  2. Chyba instalace Pythonu – Omlouváme se:UnicodeError:úniky nejsou podporovány, nelze načíst modul unicodedata [Vyřešeno]

  3. ModuleNotFoundError:Žádný modul s názvem „IPython“ [Oprava]

  1. Udělejte snímek obrazovky pomocí skriptu Python v systému Linux

  2. Paralelní spuštění skriptu shellu

  3. Spusťte skript Python přes crontab

  1. chybí modul python bz2

  2. Spuštění skriptu Python z PHP

  3. Spuštění notify-send jako root