【发布时间】:2018-07-25 13:19:18
【问题描述】:
我正在尝试在 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")
输出
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.
【问题讨论】:
-
看看键盘库的代码:github.com/boppreh/keyboard/blob/master/keyboard/_nixcommon.pydef ensure_root(): if os.geteuid() != 0: raise ImportError('你必须是root才能在linux上使用这个库.') 并且geteuid 获取有效用户id os.geteuid() 返回当前进程的有效用户id。因此,由于某种原因,在您的情况下 geteuid 返回一个值!= 0 编写一个返回 os.geteuid() 的测试程序并摆弄直到它提示 0
-
执行
sudo python KeyboardTest.py时是否收到完全相同的错误消息? -
是的,当我将它作为 sudo 运行时,结果相同。只是为了清楚错误消息是输出,错误消息中的代码在“键盘”库中。
-
我也有同样的问题...有什么解决办法吗?
标签: python