Проблема с модулем pynput при компиляции с помощью pyinstaller довольно распространена, так как этот модуль использует низкоуровневые системные вызовы, которые могут быть не полностью учтены при сборке. Вот несколько шагов, которые вы можете попробовать, чтобы решить эту проблему:
Убедитесь, что у вас последняя версия PyInstaller:
pip install --upgrade pyinstaller
Используйте --hidden-import для всех необходимых подмодулей:
Попробуйте добавить все возможные подмодули pynput:
pyinstaller --onefile --hidden-import=pynput --hidden-import=pynput.mouse --hidden-import=pynput.keyboard --hidden-import=pynput.mouse._win32 --hidden-import=pynput.keyboard._win32 main.py
Используйте --collect-all для pynput:
Этот параметр может помочь собрать все необходимые данные для модуля:
pyinstaller --onefile --collect-all pynput main.py
Проверьте наличие зависимостей в виртуальном окружении:
Убедитесь, что все зависимости установлены в вашем виртуальном окружении и что вы используете его при сборке:
pip install pynput pyperclip
Проверьте лог-файлы PyInstaller:
PyInstaller создает лог-файлы в папке build. Посмотрите их, чтобы увидеть, какие модули не были найдены или импортированы.
Используйте spec файл:
Создайте .spec файл и добавьте необходимые hidden imports вручную:
pyinstaller --onefile main.py
Затем откройте main.spec и добавьте hidden imports:
hiddenimports=['pynput', 'pynput.mouse', 'pynput.keyboard', 'pynput.mouse._win32', 'pynput.keyboard._win32']
После этого запустите сборку с помощью .spec файла:
pyinstaller main.spec
Проверьте версию pynput:
Убедитесь, что у вас установлена последняя версия pynput:
pip install --upgrade pynput
Если ни один из этих шагов не поможет, возможно, стоит попробовать использовать альтернативные библиотеки для управления мышью и клавиатурой, такие как keyboard и mouse, которые могут быть более совместимы с pyinstaller
Что нашёл на форумах, попробовал и это НЕ помогло:
1) "Верни версию pynput 1.6.8"
2) Добавь hidden import вроде
pyinstaller --onefile --hidden-import=pynput.mouse._xorg main.py или
pyinstaller --onefile --hidden-import=pynput.mouse._win32 main.py или
pyinstaller --onefile --hidden-import pynput.mouse main.py или
pyinstaller --onefile --hidden-import pynput main.py
ничего не помогло. Может кто-то сталкивался?
(windows 10, список импортов в проекте:
import tkinter as tk
from pynput import mouse
import pyperclip
import time)