В настоящее время я использую библиотеку PyMonzo и библиотеку Adafruit_Neopixel в моем питоне на Raspberry Pi. Короче говоря, я могу запускать коды PyMonzo, если я работаю как обычный пользователь, но мне нужно запускать коды Neopixel как root. Однако коды PyMonzo выдают мне ошибки при запуске от имени пользователя root, а коды Neopixel выдают ошибки, когда я не выполняю от имени пользователя root.
Я использую библиотеку PyMonzo для доступа к API Monzo, получения информации об учетной записи и вывода ее на экран. Библиотеку можно найти здесь: https://github.com/pawelad/pymonzo
Мне удалось настроить доступ к API, следуя всем инструкциям в файле readme, сохранив идентификатор клиента, секрет клиента и код авторизации в файле auth.py. Коды работают, когда я их запускаю нормально, то есть python3 filename.py, и я могу без проблем получить данные о транзакции, баланс и т. Д.
Однако я также использую библиотеку Adafruit Neopixel для одновременного управления некоторыми светодиодами. Библиотека может быть найдена здесь: https://github.com/adafruit/Adafruit_NeoPixel Использование этой библиотеки, по-видимому, имеет два ограничения: она должна быть запущена в Python 3, и она должна быть запущена от имени пользователя root. В документации объясняется, что « Чтобы NeoPixels работал на Raspberry Pi, вы должны запустить код как root! Для доступа к периферийным устройствам RPi требуется root-доступ. » Дополнительную документацию можно найти здесь: https://cdn -learn.adafruit.com / загрузки / PDF / neopixels-на-малиново-pi.pdf
Когда я запускаю sudo python3 filename.py, появляется сообщение об ошибке:
Traceback (most recent call last):
File "filename.py", line 34, in
monzo = MonzoAPI( )
File "/usr/local/lib/python3.5/dist-packages/pymonzo/monzo_api.py", line 106, in init
"To authenticate and use Monzo public API you need to pass "
ValueError: To authenticate and use Monzo public API you need to pass (or set as environment variables either the access token or all of client ID, client secret and authentication code. For more info see https://github.com/pawelad/pymonzo#authentication
Если я обычно запускаю код без использования sudo, я получаю ошибку:
Can't open /dev/mem: Operation not permitted
Traceback (most recent call last):
File "filename.py", line 66, in
neopix.show( )
.....
RuntimeError: ws2811_init failed with code -5 (mmap( ) failed)
swig/python detected a memory leak of type 'ws2811_t *', no destructor found
Кто-нибудь знает, есть ли способ отменить конфликт между этими двумя операциями, возможно, способ, которым pyMonzo может быть запущен от имени root?
Я попытался запустить sudo chmod 666 / dev / mem и запустить его без sudo.
Большое спасибо.