Raspberry Pi Python (Kivy) очень медленно с sudo

Я писал графическую программу Kivy на Raspberry Pi, с ОС KivyPie (Linux, предварительно настроенной для разработки Kivy).

по какой-то причине он работает очень медленно, если запущен с sudo. Обычно работает "python main.py", программа работает со скоростью около 30 циклов в секунду. Однако, если я сделаю "sudo python main.py", он работает так же медленно, как 1 цикл в 5-10 секунд.

Мне нужно использовать sudo для доступа к GPIO малины. (если я не попытаюсь сделать это по-другому, что я вижу, люди обсуждают).

Мне интересно, хотя, что может быть причиной такого сильного падения производительности с sudo? И можно ли обойти это?

PS: запуск той же программы на моем ПК (Linux) с и без sudo, похоже, не вызывает такой проблемы. Только на малине.

2 ответов


проблема в том, что Kivy использует альтернативную конфигурацию.ini-файл для пользователя root, а не тот, который у вас есть в ~/.kivy/config.ini.

в верхней части вашего файла python вы можете добавить следующее, чтобы заставить его использовать :

import os
os.environ['KIVY_WINDOW'] = 'egl_rpi' 

кроме того, вы можете скопировать файл ini в корень, используя:

sudo cp ~/.kivy/config.ini /root/.kivy/config.ini


Ну, я бы назвал эту проблему решенной, даже если останется несколько вопросов.

вот ключевые моменты:

  • замедление вызвано тем, что Kivy не может загрузить правильный видеодрайвер в разделе "sudo" и вместо этого использовать программный рендеринг.
  • Я не понял, почему драйвер не загружается с sudo или как его исправить. Однако...
  • после компиляции программы с Pyinstaller, все отлично работает. Исполняемый файл может быть запущен с sudo GPIO работает, Kivy загружает соответствующий драйвер, все работает быстро, как и должно.

подводя итог, причина первоначальной проблемы была найдена, исправление для запуска программы непосредственно с Python еще не найдено, но проблема была удалена путем компиляции программы с Pyinstaller. (все же, не самый удобный способ отладки.)