Raspberry Piが起動したときにPython Discordボットを実行しようとしています。これにはsystemdサービスを使用します。
[Unit]
Description=Testing
[Service]
Type=idle
WorkingDirectory=/home/pi
ExecStart=/usr/bin/python3 /home/pi/discord/bug.py
[Install]
WantedBy=multi-user.target
以前は簡単なPythonプログラムでいくつかのテストを行いましたが、すべてが大丈夫でした。 discordボットを実行しようとすると、importステートメントでエラーが発生します。テストするには、次を実行します。
sudo systemctl start bugstart
sudo systemctl status bugstart
ステータス出力は次のとおりです。
bugstart.service - Testing
Loaded: loaded (/lib/systemd/system/bugstart.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2018-08-12 02:08:47 UTC; 1s ago
Process: 1039 ExecStart=/usr/bin/python3 /home/pi/discord/bug.py (code=exited, status=1/FAILURE)
Main PID: 1039 (code=exited, status=1/FAILURE)
Aug 12 02:08:46 raspberrypi systemd[1]: Started Testing.
Aug 12 02:08:47 raspberrypi python3[1039]: Traceback (most recent call last):
Aug 12 02:08:47 raspberrypi python3[1039]: File "/home/pi/discord/bug.py", line 1, in <module>
Aug 12 02:08:47 raspberrypi python3[1039]: import discord
Aug 12 02:08:47 raspberrypi python3[1039]: ImportError: No module named 'discord'
Aug 12 02:08:47 raspberrypi systemd[1]: bugstart.service: Main process exited, code=exited, status=1/FAILURE
Aug 12 02:08:47 raspberrypi systemd[1]: bugstart.service: Unit entered failed state.
Aug 12 02:08:47 raspberrypi systemd[1]: bugstart.service: Failed with result 'exit-code'.
コマンドがrootとして実行されることがわかったので、ライブラリがrootにインストールされていない可能性があると思いましたが、コマンドラインシェルからdiscordを取得しようとしましたが、うまくいきました。
ベストアンサー1
Systemdは最小限の環境でプロセスを開始します。この場合、PYTHONPATH
より多くの損失を引き起こす可能性があります。コマンドラインから直接試してくださいenv
。
env -i /usr/bin/python3 /home/pi/discord/bug.py
同じエラーが発生する可能性があります。だから今試してみてください
env -i PYTHONPATH=you-path /usr/bin/python3 /home/pi/discord/bug.py
これがうまくいったら追加してください。
Environment=PYTHONPATH=you-path
システムデバイスに。
それでもうまくいかない場合は、何が必要かを調べる必要があります。