语境
Ubuntu 22.04 桌面:MQTT 服务器
目标:将 python(paho with logger)脚本作为服务运行
.py 按预期记录常规测试(不在 venv 中):
python3 mqtt2log.py
脚本的第 6 行是:import paho.mqtt.client as mqtt
.service 文件被复制到 /etc/system/system:
# run python script as service
# https://unix.stackexchange.com/a/634422/182280e
# copy this .service description to /etc/systemd/system/myscript.service
# /home/user/mqtt2log.py
[Unit]
Description=mqtt2log.py
[Service]
ExecStart=/usr/bin/python3 /home/user/mqtt/mqtt2log.py
[Install]
WantedBy=multi-user.target
观察
ls -l /etc/systemd/system/mqtt2log.service
返回:
-rwxrwxrwx 1 root root 314 Jan 11 17:41 /etc/systemd/system/mqtt2log.service
sudo systemctl status mqtt2log
返回:
Jan 31 13:01:30 mqtt systemd[1]: Started mqtt2log.py.
Jan 31 13:01:30 mqtt python3[158388]: Traceback (most recent call last):
Jan 31 13:01:30 mqtt python3[158388]: File "/home/user/mqtt/mqtt2log.py", line 6, in <module>
Jan 31 13:01:30 mqtt python3[158388]: import paho.mqtt.client as mqtt
Jan 31 13:01:30 mqtt python3[158388]: ModuleNotFoundError: No module named 'paho'
Jan 31 13:01:30 mqtt systemd[1]: mqtt2log.service: Main process exited, code=exited, status=1/FAILURE
Jan 31 13:01:30 mqtt systemd[1]: mqtt2log.service: Failed with result 'exit-code'.
错误消息似乎表明在第 6 行找不到 paho 模块:import paho.mqtt.client as mqtt
问题
返回错误:ModuleNotFoundError: No module named 'paho'
为什么找不到 paho 模块?
可以采取哪些诊断步骤?
我对 python 脚本从命令行运行的事实感到困惑。 也许这是权限问题?
MQTT / Paho 安装
sudo apt update
sudo apt-get install mosquitto
sudo vi /etc/mosquitto/mosquitto.conf
allow_anonymous true
listener 1883
sudo systemctl restart mosquitto
sudo apt install python3-pip
pip3 install paho-mqtt
sudo apt install -y mosquitto-clients