2016-04-11 9 views
0

Ich kann einen Systemd Autostart Service für ein Python-Skript auf dem Beaglebone Debian Jessie nicht aktivieren. Ich verwende Tkinter in meinem Skript. Hier ist meine Unit-Datei Code:Problem mit Systemd für Autostart in Python/Tkinter auf Beaglebone

[Unit] 
Description=Startup OQY 

[Service] 
WorkingDirectory=/home/debian/oqy 
ExecStart=/usr/bin/python oqy.py 
SyslogIdentifier=oqy 

[Install] 
WantedBy=multi-user.target 

und hier ist der Status Fehler

● oqy.service - Startup OQY 
    Loaded: loaded (/lib/systemd/system/oqy.service; enabled) 
    Active: failed (Result: exit-code) since Wed 2016-04-06 16:40:35 UTC; 2min 58s ago 
    Process: 10739 ExecStart=/usr/bin/python oqy.py (code=exited, status=1/FAILURE) 
Main PID: 10739 (code=exited, status=1/FAILURE) 

Apr 06 16:40:35 beaglebone oqy[10739]: Traceback (most recent call last): 
Apr 06 16:40:35 beaglebone oqy[10739]: File "oqy.py", line 270, in <module> 
Apr 06 16:40:35 beaglebone oqy[10739]: main() 
Apr 06 16:40:35 beaglebone oqy[10739]: File "oqy.py", line 252, in main 
Apr 06 16:40:35 beaglebone oqy[10739]: root = tk.Tk() 
Apr 06 16:40:35 beaglebone oqy[10739]: File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1813, in __init__ 
Apr 06 16:40:35 beaglebone oqy[10739]: self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
Apr 06 16:40:35 beaglebone oqy[10739]: _tkinter.TclError: no display name and no $DISPLAY environment variable 
Apr 06 16:40:35 beaglebone systemd[1]: oqy.service: main process exited, code=exited, status=1/FAILURE 
Apr 06 16:40:35 beaglebone systemd[1]: Unit oqy.service entered failed state. 

Was mache ich falsch?

UPDATE: Systemdienste konfigurieren Systemdienste. Die GUI muss warten, bis der Display-Server und der Display-Manager gestartet sind, also sollte ich systemd überhaupt nicht verwenden.

+0

Suche für diesen Fehler: es sieht aus wie es die Wurzel des Problems ist. Es gibt viele Antworten auf dieser Seite und anderen dazu: 'kein Anzeigename und keine $ DISPLAY-Umgebungsvariable' –

Antwort

0

Wie ich oben geschrieben habe, konfigurieren Systemd Services Systemdienste. Die GUI muss warten, bis der Display-Server und der Display-Manager gestartet sind, so dass Systemd keine GUI laden kann.

Stattdessen schreibt eine Datei/etc/xdg/Autostart wie folgt aus:

[Desktop Entry] 
Type=Application 
Exec=sudo /usr/bin/python /home/debian/oqy/oqy.py 
Name=oqy 
Comment=Startup OQY on load