Ошибка импорта: вы должны быть root

Я пытаюсь использовать библиотеку клавиатуры в Python 3, но по-прежнему получаю ошибку импорта. Я запускал программу в Windows в Thonny, и она работала нормально, но я не могу запустить ее в пи. Я попытался запустить его как root, так и с помощью команды sudo с теми же результатами. Ниже приведен код и ошибка.

import keyboard
import time

x=0

while True:
    print (x)
    x=x+1
    print ("Press t to end program")
    if keyboard.is_pressed('t'):
        break
    else:
        pass

print("I'm done")

Выход

0
Press t to end program
Traceback (most recent call last):
File "/home/pi/Desktop/Programs/KeyboardTest.py", line 10, in <module>
if keyboard.is_pressed('t'):
File "/home/pi/.local/lib/python3.5/site-packages/keyboard/__init__.py", line 166, in is_pressed
_listener.start_if_necessary()
File "/home/pi/.local/lib/python3.5/site-packages/keyboard/_generic.py", line 35, in start_if_necessary
self.init()
File "/home/pi/.local/lib/python3.5/site-packages/keyboard/__init__.py", line 116, in init
_os_keyboard.init()
File "/home/pi/.local/lib/python3.5/site-packages/keyboard/_nixkeyboard.py", line 110, in init
build_device()
File "/home/pi/.local/lib/python3.5/site-packages/keyboard/_nixkeyboard.py", line 106, in build_device
ensure_root()
File "/home/pi/.local/lib/python3.5/site-packages/keyboard/_nixcommon.py", line 165, in ensure_root
raise ImportError('You must be root to use this library on linux.')
ImportError: You must be root to use this library on linux.

person vinnie    schedule 14.02.2018    source источник
comment
Взгляните на код библиотеки клавиатуры: github.com/boppreh/ keyboard / blob / master / keyboard / _nixcommon.py def sure_root (): if os.geteuid ()! = 0: raise ImportError ('Вы должны быть пользователем root, чтобы использовать эту библиотеку в Linux.') И geteuid извлекает эффективный идентификатор пользователя os.geteuid () Возвращает эффективный идентификатор пользователя текущего процесса. Итак, по какой-то причине в вашем случае geteuid возвращает значение! = 0 Напишите тестовую программу, которая возвращает os.geteuid (), и возитесь, пока она не предложит 0   -  person Omni    schedule 15.02.2018
comment
Вы получаете точно такое же сообщение об ошибке, когда делаете sudo python KeyboardTest.py?   -  person FlyingTeller    schedule 15.02.2018
comment
Да, те же результаты, когда я запускаю его как sudo. и просто для ясности, сообщение об ошибке - это вывод, а код в сообщении об ошибке находится в библиотеке клавиатуры.   -  person vinnie    schedule 15.02.2018
comment
У меня такая же проблема ... какое решение?   -  person Prokop Hapala    schedule 18.08.2018


Ответы (4)


Очень поздний ответ, но у меня была такая же проблема. Только что нашел решение. Для запуска этой программы вы должны быть root! Однако "Попался" связан с тем, как вы установили библиотеку клавиатуры ...

Убедитесь, что при установке библиотеки клавиатуры вы выполнили:

sudo pip3 установить клавиатуру

Я не делал sudo и впервые установил его. Так случилось вот что:

1) вы пытаетесь запустить программу без рута

  • библиотека ДЕЙСТВИТЕЛЬНО существует, но вы не являетесь пользователем root, поэтому у вас возникла проблема

2) вы пытаетесь запустить программу как root

  • Но pip3 не устанавливал его для пользователя root, поэтому вы получаете сообщение «клавиатура не распознается».

надеюсь, что это помогло.

person MS-87    schedule 04.01.2019
comment
Чб, похоже, это будет довольно ясно для большинства людей ... вы должны запускать как root ... sudo... lol ... Но мне интересно, есть ли альтернатива, где это не заставляет меня запускать как root в Linux ? Желательно тот, который не полагается на X-сервер ... - person 255.tar.xz; 30.10.2019

Другое решение. Во-первых, мы хотим запустить IDLE с правами root.

  1. Открыть терминал. Введите команду sudo idle. Это создаст новое окно IDLE, которое имеет разрешение root.
  2. Теперь в открывшемся окне IDLE FILE- ›Open-› откройте файл python, который вы хотите запустить.
  3. Теперь перейдите в раздел «Выполнить»> «Выполнить модуль».

Теперь скрипт python будет запускаться с правами root, так как, набрав sudo idle, мы запускаем IDLE с правами root.

person Hemant Mayatra    schedule 10.02.2021

$> sudo su

Затем введите пароль для пользователя и запустите файл сценария

person Saisiva A    schedule 22.01.2020

На raspberry pi откройте терминал и перейдите в папку с кодом. Введите команду ниже

sudo python filename.py

это оно. Если вы попытаетесь запустить код с IDLE, он всегда будет показывать эту ошибку, связанную с корнем.

person Hemant Mayatra    schedule 10.02.2021