Python 스크립트를 시스템 작업으로 실행할 때 ModuleNotFoundError가 발생했습니다.

Python 스크립트를 시스템 작업으로 실행할 때 ModuleNotFoundError가 발생했습니다.

시작 시 실행하고 싶은 Python 스크립트가 있습니다. 그러나 시스템 서비스로 실행하면 모듈 중 하나를 찾을 수 없는 것 같습니다. 상태 메시지는 다음과 같습니다.

● mqttproc.service - MQTT Post-processor
     Loaded: loaded (/etc/systemd/system/mqttproc.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2021-12-06 11:10:45 GMT; 2min 31s ago
    Process: 2375 ExecStart=/usr/bin/python3 /home/ken/python/mqttproc/mqttproc.py (code=exited, status=1/FAILURE)
   Main PID: 2375 (code=exited, status=1/FAILURE)

Dec 06 11:10:45 MintVM systemd[1]: Started MQTT Post-processor.
Dec 06 11:10:45 MintVM python3[2375]: Sensor positions [100.0, 80.0, 60.0, 40.0, 20.0, 0.0] (Litres)
Dec 06 11:10:45 MintVM python3[2375]: Traceback (most recent call last):
Dec 06 11:10:45 MintVM python3[2375]:   File "/home/ken/python/mqttproc/mqttproc.py", line 131, in <module>
Dec 06 11:10:45 MintVM python3[2375]:     import paho.mqtt.client as mqtt
Dec 06 11:10:45 MintVM python3[2375]: ModuleNotFoundError: No module named 'paho'
Dec 06 11:10:45 MintVM systemd[1]: mqttproc.service: Main process exited, code=exited, status=1/FAILURE
Dec 06 11:10:45 MintVM systemd[1]: mqttproc.service: Failed with result 'exit-code'.

이상한 점은 이 스크립트를 명령줄에서 실행할 때 실패하지 않는다는 것입니다. 다른 컴퓨터에서 시스템 서비스로 실행하기도 했습니다. 내 .service 파일은 매우 간단합니다.

[Unit]
Description=MQTT Post-processor

[Service]
ExecStart=/usr/bin/python3 /home/ken/python/mqttproc/mqttproc.py
WorkingDirectory=/home/ken/python/mqttproc

[Install]
WantedBy=multi-user.target

누구든지 내가 놓친 명백한 점을 지적할 수 있습니까?

미리 감사드립니다.

답변1

작업이 에 의해 실행 중이 cron거나 systemd시작 스크립트가 데스크탑에서 실행 중인 것과 동일한 런타임 환경에서 실행되고 있지 않습니다. systemd로 스크립트를 시작합니다 root. 변경 사항이나 기타 환경 변수 설정은 작업 에 자동으로 전파 PATH되지 않습니다 . 예를 들어 no 이므로 GUI 프로그램에는 특별한 처리(읽기 )가 필요합니다.~/.bashrccron$DISPLAYman xhost

cron환경 변수는 모든 작업에 대한 읽기 파일에서 설정할 수 있습니다 .crontabman 5 crontab

echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias각 환경의 결과를 확인하세요.

관련 정보