首页 > 解决方案 > pynput.keyboard 侦听器在 macOS 上失败

问题描述

我只是想制作一个简单的键盘监听器,它可以打印我按下的任何键(pynput.keyboard.Listener)。这是我的代码:

from pynput.keyboard import Listener

def on_press(k):
    print(k)


with Listener(on_press=on_press) as lis:
    lis.join()

但是,当我运行它时,它什么也不做。所以我按CTRL+C并显示以下错误:

Traceback (most recent call last):
  File "/Users/me/Desktop/py/KeyLogger/keylogger.py", line 8, in <module>
    lis.join()
  File "/usr/local/lib/python3.7/site-packages/pynput/_util/__init__.py", line 252, in join
    super(AbstractListener, self).join(*args)
  File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 1044, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 1060, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt

这里使用 anaconda/Python3.8 而不是 Python3.7:

Traceback (most recent call last):
  File "/Users/me/Desktop/py/KeyLogger/keylogger.py", line 8, in <module>
    lis.join()
File "/Users/me/opt/anaconda3/lib/python3.8/site-packages/pynput/_util/__init__.py", line 252, in join
    super(AbstractListener, self).join(*args)
  File "/Users/me/opt/anaconda3/lib/python3.8/threading.py", line 1011, in join
    self._wait_for_tstate_lock()
  File "/Users/me/opt/anaconda3/lib/python3.8/threading.py", line 1027, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt

似乎错误是当我告诉听众开始时。我一直在寻找类似的问题(主要是线程和 join() 问题),但我还没有找到我的问题的答案。¿ 这可能是一个pynput问题吗?

谢谢。

标签: pythonjoinlistenerpynputkeylogger

解决方案


推荐阅读