导入错误:您必须是root用户

vin*_*nie 7 python

我正在尝试在python 3中使用键盘库,但继续导致导入错误.我在Thonny的Windows中运行程序,它工作正常,但我不能在pi中运行它.我尝试以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")
Run Code Online (Sandbox Code Playgroud)

产量

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.
Run Code Online (Sandbox Code Playgroud)

小智 9

回复很晚,但我遇到了同样的问题。刚刚找到了解决方案。你必须是 root 才能运行这个程序!然而,“问题”与您安装键盘库的方式有关......

确保在安装键盘库时执行了以下操作:

须藤 pip3 安装键盘

我没有做 sudo 并且第一次安装它。所以发生的事情是:

1)您尝试在没有root身份的情况下运行该程序

  • 该库确实存在,但您不是 root,所以您会遇到问题

2)您尝试以root身份运行程序

  • 但是 pip3 没有为 root 用户安装它,所以你会得到一个“键盘无法识别”。

希望这有帮助。

  • 老实说,这对大多数人来说似乎都很清楚......“你必须以 root 身份运行”...`sudo...` 哈哈...但我想知道是否有一种不强制的替代方案我要在 Linux 上以 root 身份运行吗?最好是不依赖 X 服务器的...... (3认同)

I-C*_*beX 5

pynput模块完全避免了权限问题。

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (2认同)
  • 就是这样。有关示例,请参阅 https://pypi.org/project/pynput/。 (2认同)