无法在Mac上运行'keyboard.is_pressed'

8

我正在尝试编写一个脚本,每次按下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

谢谢!


错误信息看起来很简单。尝试以管理员身份运行它。也许在OSX中需要keyboard模块。 - nog642
您能否向我们展示整个控制台输出?我猜那行代码只是回溯的结尾,并且实际上您的代码中并没有 raise OSError - nog642
是的,这里是整个错误信息:线程Thread-1中的异常: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 916, in _bootstrap_inner self.run() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 864, in run self._target(*self._args, **self._kwargs) - J.Kobayashi
文件“/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-必须以管理员身份运行” - J.Kobayashi
我不确定如何以管理员身份运行。 - J.Kobayashi
你能否编辑你的问题并放入完整的回溯信息?我对OSX不是很了解,所以无法提供实质性的帮助,但我相信这样做会更容易让其他人回答你的问题。 - nog642
3个回答

6

因为安全特性,您不能像运行常规Python文件一样使用虚拟键盘输入来运行脚本。

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

如果您输入

python3 script.py

macOS将视此为安全漏洞,因为记录键盘输入(例如 keyboard.is_pressed('x'))是记录用户在网站、应用程序等上输入密码的典型方法。


要避免这种错误,您需要以管理员身份运行该文件。

要这样做,请输入:

sudo python3 script.py

它会要求您输入用户密码,然后继续执行代码。

3
在 macOS Monterey 上执行 sudo 命令导致出现 "sh: segmentation fault sudo python3 pythonstuff.py" 错误。 - nyholku
键盘是一个适用于Windows和Linux的模块(在安装时会显示这一信息)。 - Marco de Boer

2
键盘模块会注册全局键盘事件(即在应用程序无焦点时也能触发),在 MacOS 下需要管理员权限。

6
这使得这个模块几乎没用了...谁会想以管理员身份(或任何其他身份)运行Python代码呢。 - nyholku

0
你还可以去系统设置 -> 隐私与安全,找到允许Python控制你的键盘的选项。

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接