【问题标题】:Import error: you must be root导入错误:你必须是root
【发布时间】: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


【解决方案1】:

回复很晚,但我遇到了同样的问题。刚刚找到了解决办法。你必须是root才能运行这个程序!然而,“问题”来自于您如何安装键盘库...

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

sudo pip3 安装键盘

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

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

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

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

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

希望这会有所帮助。

【讨论】:

  • Tbh 这对大多数人来说似乎很清楚......“你必须以 root 身份运行”......sudo... 大声笑......但我想知道是否有其他选择它不会强迫我在 Linux 上以 root 身份运行吗?最好是不依赖 X 服务器的...
【解决方案2】:

在树莓派上打开终端并进入代码文件夹。 在下面输入命令

sudo python 文件名.py

就是这样。如果您尝试使用 IDLE 运行代码,它将始终显示此根相关错误。

【讨论】:

    【解决方案3】:

    另一种解决方案。一件事是我们想以 root 权限运行 IDLE。

    1. 打开终端。键入命令“sudo idle”。它将创建一个具有root权限的IDLE新窗口。
    2. 现在在打开的 IDLE 窗口 FILE-> Open -> 打开要运行的 python 文件。
    3. 现在转到运行-> 运行模块。

    现在 python 脚本将以 root 权限运行,因为通过键入“sudo idle”,我们以 root 权限运行 IDLE。

    【讨论】:

      【解决方案4】:

      $&gt; sudo su

      然后输入用户密码并运行脚本文件

      【讨论】:

        猜你喜欢
        • 2013-09-24
        • 2018-08-31
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-23
        • 1970-01-01
        • 2017-03-19
        相关资源
        最近更新 更多