键盘模块在将脚本转换为 exe 时出现溢出错误

Keyboard module gives overflow error when converting script to exe

我试图创建一个程序来使用 Python 的键盘模块记录键盘按键。 我想为程序创建一个独立的可执行文件。所以我使用 PyInstaller 以及其他 py 到 exe 转换器 将我的脚本转换为 exe 格式,但它总是在执行时出现溢出错误。

Exception in thread Thread-1:
Traceback (most recent call last):
  File "threading.py", line 916, in _bootstrap_inner
  File "threading.py", line 864, in run
  File "site-packages\keyboard\__init__.py", line 292, in listen
  File "site-packages\keyboard\_winkeyboard.py", line 560, in listen
  File "site-packages\keyboard\_winkeyboard.py", line 553, in prepare_intercept
ctypes.ArgumentError: argument 3: <class 'OverflowError'>: int too long to convert

我能做些什么来防止它? 或者有没有其他方法可以在其他计算机上为 运行 一个 python 脚本创建一个独立文件?

这是键盘模块导入 SetWindowsHookEx Windows API 方式的错误(ctypes 默认所有参数为 int 和 SetWindowsHookEx 的第三个参数是一个 HINSTANCE,在 64 位上是 64 位宽)。 (hackish) 解决方案是修补库 - 在 _winkeyboard.py 的第 32 行将 c_longlong 添加到从 ctypes 的导入中,然后在线取消注释 SetWindowsHookEx 的 argtypes 95 并将第三个更改为 c_longlong: SetWindowsHookEx.argtypes = [c_int, LowLevelKeyboardProc, c_longlong, c_int]