You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pynput全局热键报错:'_thread._ThreadHandle'对象不可调用

解决pynput全局热键在Python3.13 macOS下的TypeError问题

问题原因

Python 3.13对_thread模块的API做了改动,其中_thread._ThreadHandle对象不再是可调用类型,而旧版本的pynput尚未适配这个变化,导致在macOS平台触发该错误。

解决方案

1. 降级Python版本(最快速方案)

将Python版本切换到3.12或更早版本,你的代码在这些版本下可以正常运行。如果使用虚拟环境,执行以下步骤:

  • 删除现有虚拟环境:rm -rf my-venv
  • 用Python3.12创建新虚拟环境:python3.12 -m venv my-venv
  • 激活虚拟环境:source my-venv/bin/activate
  • 重新安装pynput:pip install pynput

2. 临时修改pynput源码(适配Python3.13)

如果不想降级Python,可以手动修改pynput的适配代码:

  1. 找到pynput安装路径下的pynput/_util/darwin.py文件(路径类似你报错里的/Users/name/workspace/.../my-venv/lib/python3.13/site-packages/pynput/_util/darwin.py)
  2. 定位到报错的_handler方法(第283行附近),检查self._handle的赋值逻辑。如果是错误地将线程句柄赋值给了self._handle,需要修正为保存实际的事件处理函数,而非线程句柄。

3. 等待pynput官方更新

等待pynput发布适配Python3.13的正式版本,之后直接升级pynput即可:pip install --upgrade pynput


内容的提问来源于stack exchange,提问作者JulianG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:25:07