前提・実現したいこと
systemdを使うと以下のようなエラーが発生します。
一方でサービスを使わずにシェルスクリプトを直接実行するとうまくいきます。
以前は、pythonの実行環境が違うということで解決しましたが、今回は同じ環境であることを確認しました。
何が起きているのでしょうか。
分かる方がいましたらコメントお願いします。
発生している問題・エラーメッセージ
$ cat log.txt Traceback (most recent call last): File "sample.py", line 1, in <module> from pytz import timezone ModuleNotFoundError: No module named 'pytz'
sample.service - sample daemon Loaded: loaded (/etc/systemd/system/sample.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Thu 2020-11-12 16:15:43 JST; 12s ago Process: 2848 ExecStart=/home/pi/shellscript/sample.sh (code=exited, status=1/FAILURE) Main PID: 2848 (code=exited, status=2) 11月 12 16:15:43 uname systemd[1]: Started sample daemon. 11月 12 16:15:43 uname systemd[1]: sample.service: Main process exited, code=exited, status=1/FAILURE 11月 12 16:15:43 uname systemd[1]: sample.service: Failed with result 'exit-code'.
該当のソースコード
$ cat setup.sh #!/bin/bash set -x cd #対象ディレクトリ移動 /usr/bin/python3 check_sample.py 2>> log.txt
$ which python3 /usr/bin/python3
$ /usr/bin/python3 -mpip list Package Version ------------------ ----------- ... pytz 2020.4 ...
###試したこと
$ /usr/bin/python3 -m pip show pytz Name: pytz Version: 2020.4 Summary: World timezone definitions, modern and historical Home-page: http://pythonhosted.org/pytz Author: Stuart Bishop Author-email: stuart@stuartbishop.net License: MIT Location: /home/pi/.local/lib/python3.7/site-packages Requires: Required-by:
[Unit] Description = daemon Wants = network-online.target After = network.target network-online.target [Service] ... User=pi Group=pi [Install] WantedBy = multi-user.target
補足情報(FW/ツールのバージョンなど)
python3.7