Как запустить приложение pyqt ui с помощью systemd - PullRequest
0 голосов
/ 13 июля 2020

У меня есть приложение pyqt5 UI, которое я хочу начать использовать службу systemd в raspberry pi. Для этого ниже приведен служебный код:

[Unit]
Description=QT App

[Service]
User=pi
WorkingDirectory=/home/pi/Documents/qtproj
Environment=DISPLAY=:0
ExecStart=/bin/bash '/home/pi/Documents/qtproj/start_app.sh' 
Restart=always
RestartSec=10s

[Install]
WantedBy=graphical.target

Согласно приведенному выше коду, я запускаю сценарий start_app.sh, который загружает несколько библиотек, а затем, наконец, запускаю приложение python3 pyqt5. Когда я запускаю вышеуказанный сервис, он остается в неактивном состоянии:

● myqt.service - QT App
   Loaded: loaded (/etc/systemd/system/myqt.service; disabled; vendor preset: en
   Active: inactive (dead)

Jul 13 09:47:57 pi systemd[1]: Started QT App.
Jul 13 09:47:57 pi sudo[7861]:     pi : TTY=unknown ; PWD=/home/pi
Jul 13 09:47:57 pi sudo[7861]: pam_unix(sudo:session): session opened 
Jul 13 09:47:58 pi bash[7860]: No protocol specified
Jul 13 09:47:58 pi bash[7860]: qt.qpa.screen: QXcbConnection: Could no
Jul 13 09:47:58 pi bash[7860]: Could not connect to any X display.
Jul 13 09:47:59 pi sudo[7861]: pam_unix(sudo:session): session closed 
Jul 13 09:47:59 pi systemd[1]: myqt.service: Main process exited, code
Jul 13 09:47:59 pi systemd[1]: myqt.service: Failed with result 'exit-
Jul 13 09:48:05 pi systemd[1]: Stopped QT App

Из приведенного выше статуса ясно, что он не может подключиться к дисплею, хотя я дал graphical.target. Подскажите, пожалуйста, как мне создать службу systemd для приложения pyqt5. Пожалуйста помоги. Спасибо

1 Ответ

0 голосов
/ 15 июля 2020

если это приложение gui (графический интерфейс ПОЛЬЗОВАТЕЛЯ), авторизованный пользователь является обязательным. почему бы не запустить его из общесистемного .profile или подобного для вашей системы?

для bash, то есть /etc/profile.

...