Python代码打包为exe后运行出现ImportError问题求助
问题成因
你的推测正确,该报错确实由pynput模块的导入引发。
你使用的打包工具(通常是PyInstaller)无法自动识别pynput的隐式依赖:pynput的键盘、鼠标监听功能底层依赖系统适配的内部模块,这部分模块不会被打包工具的常规导入扫描逻辑识别,导致打包后的exe运行时找不到对应依赖,抛出导入错误。
解决方案
按照以下步骤操作即可解决:
- 打包时添加
--hidden-import参数显式声明pynput的依赖模块,Windows系统打包命令示例:
pyinstaller -F -w 你的脚本文件名.py --hidden-import=pynput.keyboard._win32 --hidden-import=pynput.mouse._win32
补充说明:Mac系统将命令中
_win32替换为_darwin,Linux系统替换为_xorg即可
- 如果上述操作后仍有报错,可以手动修改打包生成的
.spec配置文件,找到hiddenimports配置项,补充如下内容:
hiddenimports = [ 'pynput.keyboard._win32', 'pynput.mouse._win32' ]
修改完成后使用spec文件执行打包:pyinstaller 你的脚本文件名.spec
- 如果运行exe时提示权限错误,右键点击exe选择「以管理员身份运行」即可,键盘监听类操作需要系统高权限支持。
- 若打包后exe被杀毒软件拦截删除,将exe所在目录添加到杀毒软件信任列表即可,
pynput的监听行为会被部分杀毒软件判定为风险操作。
内容的提问来源于stack exchange,提问作者devv
相关产品推荐
相关产品推荐

