PyInstaller打包后出现ModuleNotFoundError: No module named 'pynput'求助
问题:PyInstaller打包后提示找不到pynput模块
直接运行代码时pynput.keyboard键盘监听器正常工作,但用PyInstaller(或auto-py-to-exe)打包后出现以下错误:
Traceback (most recent call last):
File "main.py", line 1, in
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "hack_init_.py", line 3, in
from pynput import keyboard
ModuleNotFoundError: No module named 'pynput'
[16912] Failed to execute script 'main' due to unhandled exception
已尝试在auto-py-to-exe中添加--hidden-imports参数,但问题未解决。
相关代码
hack/init.py
import json import os from pynput import keyboard import pyautogui import pytesseract import _thread from .window import * from time import sleep from openai import OpenAI import pyscreenshot
键盘监听器代码
starting=False def on_press(key): global starting if key == keyboard.Key.esc: starting=False listener = keyboard.Listener(on_press=on_press) listener.start()
解决方法
- 修正hidden-import参数写法:auto-py-to-exe中应使用
--hidden-import(单数形式)而非--hidden-imports,如果需要导入多个子模块,可重复添加参数,比如--hidden-import pynput --hidden-import pynput.keyboard - 手动指定模块路径:如果pynput安装路径特殊,打包时用
--paths参数指向其所在的site-packages目录,示例:pyinstaller --paths C:\PythonXX\Lib\site-packages main.py - 通过spec文件手动配置:
- 生成spec文件:
pyi-makespec main.py - 打开生成的
main.spec,在hiddenimports列表中添加'pynput', 'pynput.keyboard',示例片段:a = Analysis( ['main.py'], pathex=[], binaries=[], datas=[], hiddenimports=['pynput', 'pynput.keyboard'], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], noarchive=False, ) - 基于spec文件打包:
pyinstaller main.spec
- 生成spec文件:
- 重新安装pynput:确保当前打包用的Python环境中pynput安装正常,执行
pip install --force-reinstall pynput修复可能的安装损坏 - 检查auto-py-to-exe配置:在"Advanced"选项卡的"Hidden Imports"输入框中,直接填写
pynput,pynput.keyboard(逗号分隔,无需加参数前缀),再重新打包
内容的提问来源于stack exchange,提问作者Beronicous
相关产品推荐
相关产品推荐

