Я пытаюсь запустить приложение python kivy при загрузке с сервисом systemd, и оно возвращает ошибку «1001» * Если я запускаю приложение из оболочки с моим пользователем, все в порядке, но если я делаю с systemd или с sudo из оболочкиЯ получаю ошибку.Я также пытался запустить приложение из скрипта bash вместе с cron (@reboot), но получаю ту же ошибку.
Моя система:
Raspberry Pi 3B+
PipaOS 6.0 based on Raspbian Lite Stretch
Kivy v1.10.0
Python v2.7.13 (default, Nov 24 2017, 17:33:09)
Файл службы Systemd:
[Unit]
Description=My Script spie_protocol
After=multi-user.target
[Service]
Type=idle
User=pi
ExecStart=/usr/bin/python /home/pi/spie_protocol/main.py > /home/pi/spie_protocol.log 2>&1
[Install]
WantedBy=multi-user.target
Ошибка вывода:
[INFO ] [Logger ] Record log in /home/pi/.kivy/logs/kivy_18-10-04_0.txt
[INFO ] [Kivy ] v1.10.0
[INFO ] [Python ] v2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO ] [Window ] Provider: egl_rpi
libEGL warning: DRI3: xcb_connect failed
libEGL warning: DRI2: xcb_connect failed
libEGL warning: DRI2: xcb_connect failed
[CRITICAL] [Window ] Unable to find any valuable Window provider.
egl_rpi - EGLError: EGL_NOT_INITIALIZED (code x3001)
File "/usr/local/lib/python2.7/dist-packages/kivy/core/__init__.py", line 67, in core_select_lib
cls = cls()
File "/usr/local/lib/python2.7/dist-packages/kivy/core/window/__init__.py", line 899, in __init__
self.create_window()
File "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 37, in create_window
self._create_egl_context(self.win, 0)
File "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 66, in _create_egl_context
egl.Initialise(display)
File "kivy/lib/vidcore_lite/egl.pyx", line 351, in kivy.lib.vidcore_lite.egl.Initialise (/tmp/pip-gDUvyK-build/kivy/lib/vidcore_lite/egl.c:2317)
File "kivy/lib/vidcore_lite/egl.pyx", line 321, in kivy.lib.vidcore_lite.egl.raise_egl_error (/tmp/pip-gDUvyK-build/kivy/lib/vidcore_lite/egl.c:1873)
[CRITICAL] [App ] Unable to get a Window, abort.
И вывод без ошибки если Iзапустите его из оболочки с моим пользователем:
[INFO ] [Logger ] Record log in /home/pi/.kivy/logs/kivy_18-10-04_1.txt
[INFO ] [Kivy ] v1.10.0
[INFO ] [Python ] v2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO ] [Window ] Provider: egl_rpi
[INFO ] [GL ] Using the "OpenGL ES 2" graphics system
[INFO ] [GL ] Backend used <gl>
[INFO ] [GL ] OpenGL version <OpenGL ES 2.0>
[INFO ] [GL ] OpenGL vendor <Broadcom>
[INFO ] [GL ] OpenGL renderer <VideoCore IV HW>
[INFO ] [GL ] OpenGL parsed version: 2, 0
[INFO ] [GL ] Shading version <OpenGL ES GLSL ES 1.00>
[INFO ] [GL ] Texture max size <2048>
[INFO ] [GL ] Texture max units <8>
[INFO ] [Shader ] fragment shader: <Compiled>
[INFO ] [Shader ] vertex shader: <Compiled>
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Text ] Provider: sdl2
[INFO ] [OSC ] using <multiprocessing> for socket
[INFO ] [ProbeSysfs ] device match: /dev/input/event0
[INFO ] [MTD ] Read event from </dev/input/event0>
[INFO ] [ProbeSysfs ] device match: /dev/input/event0
[INFO ] [HIDInput ] Read event from </dev/input/event0>
[INFO ] [Base ] Start application main loop
[INFO ] [MTD ] </dev/input/event0> range position X is 0 - 800
[INFO ] [HIDMotionEvent] using <FT5406 memory based driver>
[INFO ] [GL ] NPOT texture support is available
[INFO ] [MTD ] </dev/input/event0> range position Y is 0 - 480
[INFO ] [HIDMotionEvent] <FT5406 memory based driver> range ABS X position is 0 - 800
[INFO ] [MTD ] </dev/input/event0> range touch major is 0 - 0