Aeo*_*lus 2 debian python systemd
当我的 Raspberry Pi 启动时,我试图运行一个 python discord bot。为此,我使用了 systemd 服务:
[Unit]
Description=Testing
[Service]
Type=idle
WorkingDirectory=/home/pi
ExecStart=/usr/bin/python3 /home/pi/discord/bug.py
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我之前用更简单的 python 程序做了几次测试,一切正常。尝试运行 discord bot 时,它会在 import 语句中引发错误。为了测试,我运行:
sudo systemctl start bugstart
sudo systemctl status bugstart
Run Code Online (Sandbox Code Playgroud)
状态输出如下:
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'.
Run Code Online (Sandbox Code Playgroud)
我发现这些命令是以 root 身份运行的,所以我想可能是因为这个库没有安装在 root 上,但是我尝试在命令行 shell 中导入 discord 并且它工作正常。
Systemd 以最小的环境启动进程。在这种情况下,您可能会丢失PYTHONPATH甚至更多。在命令行上自己尝试使用env:
env -i /usr/bin/python3 /home/pi/discord/bug.py
Run Code Online (Sandbox Code Playgroud)
你可能会得到同样的错误。所以现在试试看
env -i PYTHONPATH=you-path /usr/bin/python3 /home/pi/discord/bug.py
Run Code Online (Sandbox Code Playgroud)
如果这有效,请添加
Environment=PYTHONPATH=you-path
Run Code Online (Sandbox Code Playgroud)
到您的系统单元。
如果它不起作用,您需要找出还需要什么。
| 归档时间: |
|
| 查看次数: |
4554 次 |
| 最近记录: |