【问题标题】:Unable to run 'keyboard.is_pressed' on Mac无法在 Mac 上运行“keyboard.is_pressed”
【发布时间】:2019-03-27 04:23:16
【问题描述】:

我正在尝试制作一个脚本,每次按 x 时,它都会打印 y。

当我运行代码时:

import keyboard

if keyboard.is_pressed('x'):
    print ("y")

控制台输出:

   raise OSError("Error 13 - Must be run as administrator")
OSError: Error 13 - Must be run as administrator

谢谢!

【问题讨论】:

  • 错误信息看起来很简单。尝试以管理员身份运行它。也许keyboard 模块在 OSX 中需要它。
  • 您能否向我们展示整个控制台输出?我假设这行代码只是回溯的结尾,而您的代码中实际上并没有raise OSError
  • 是的,这是整个错误:线程 Thread-1 中的异常:回溯(最近一次调用最后一次):文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3. 6/threading.py”,第 916 行,在 _bootstrap_inner self.run() 文件中“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py”,第 864 行,在运行自我中。 _target(*self._args, **self._kwargs)
  • 文件 "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keyboard/__init__.py",第 292 行,在听 _os_keyboard.listen(self .direct_callback) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keyboard/_darwinkeyboard.py”,第 430 行,在监听中引发 OSError(“错误 13 - 必须运行作为管理员”)OSError:错误13 - 必须以管理员身份运行
  • 我不知道如何以管理员身份运行

标签: python macos keyboard


【解决方案1】:

由于 macOS 中的安全功能,您无法像通常在 mac 终端中那样运行它。

假设您的文件名为 script.py。

如果你输入

python3 script.py

在终端中,它会弹出 OSError,因为 macOS 将此视为安全漏洞。


您需要以管理员身份运行此文件。

为此,您需要输入

sudo python3 script.py

然后它会要求您输入密码作为验证。之后,您的脚本应该会按预期工作。

【讨论】:

  • 这(sudo)在 macOS Monterey 上导致了“sh:segmentation fault sudo python3 pythonstuff.py”。
【解决方案2】:

键盘模块注册全局键事件(它们在没有应用程序焦点的情况下触发),这需要 MacOS 下的管理员权限。

【讨论】:

  • 这使得这个模块几乎毫无用处......谁想以管理员身份运行 Python 代码(或任何其他代码)。
猜你喜欢
  • 2012-01-08
  • 2015-10-09
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
相关资源
最近更新 更多