Как запустить приложение Python GUI в качестве службы Ubuntu? - PullRequest
0 голосов
/ 04 марта 2019

Evn = Ubuntu 18.04 64bit (Desktop)

Файл: "/ home / kwan / python / client.py"

#!/usr/bin/python3
# encoding: utf-8

import socket
from time import sleep


class sock:
    def __init__(self, target):
        self.target = (target, 6666)
        self.flag = "alive"

    def keep_conn(self):
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            try:
                s.connect(self.target)
                s.send(self.flag.encode("utf8"))
                print("conn success!")
            except Exception as err:
                print(err)


if __name__ == '__main__':
client_sock = sock("192.168.1.144")
try:
    print("Press Ctrl + C to stop")
    while True:
        client_sock.keep_conn()
        # sleep(1)
except KeyboardInterrupt:
    print("stop")
    exit(1)
except Exception as err:
    print(err)

Файл: "/ etc / systemd / system /autorun.service "

Редактировать:

[Unit]
Description=AutoRun
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/home/kwan/python
ExecStart=/usr/bin/python3 /home/kwan/python/client.py
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

Команда терминала:

sudo systemctl enable autorun.service
sudo systemctl daemon-reload
sudo service autorun start

Может работать!

Но когда я создаю графический интерфейс пользователя tkinterскрипт:

Файл: /home/kwan/python/gui.py

#!/usr/bin/python3
# encoding: utf-8

import tkinter as tk

if __name__ == '__main__':
    window = tk.Tk()
    window.geometry('300x200')
    window.mainloop()

и редактируйте служебные файлы, как раньше, но ничего не происходит.

Может работать наКоманда терминала и отображение окна:

python3 /home/kwan/python/gui.py

Файл: "/ etc / systemd / system / mygui.service"

Редактировать:

[Unit]
Description=MyGUI
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/home/kwan/python
ExecStart=/usr/bin/python3 /home/kwan/python/gui.py
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

Команда терминала:

sudo systemctl enable mygui.service
sudo systemctl daemon-reload
sudo service mygui start

Кто-нибудь знает, почему служба работает, но нет графического интерфейса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...