键盘模块在将脚本转换为 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]
我试图创建一个程序来使用 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]