Игра на pygame не собирается в .EXE
Есть простенькая змейка на pygame с 2-мя картинками и фоновой музыкой. Пробовал собрать через pyinstaller, файлы добавляются, но сам pygame не скачивается, даже если прописываешь hidden imports согласно этой (https://habr.com/ru/sandbox/143934/) и этой (https://habr.com/ru/sandbox/143934/) инструкции. И даже если меняешь .spec-файл
Терминал выдает no module pygame
Пока все найденные ответы на stackoverflow не решили проблему. Может кто сталкивался именно с установкой pygame при сборке?
Ниже скрины структуры игры и логов:
Логги
C:\Users\User\Desktop\1>pyinstaller --onefile --add-data "images/lose.jpeg;images" --
add-data "images/win.jpg;images" --hidden-import='pygame' labirint.py345 INFO: PyInstaller: 6.3.0
346 INFO: Python: 3.12.1374 INFO: Platform: Windows-11-10.0.22621-SP0
376 INFO: wrote C:\Users\User\Desktop\1\labirint.spec384 INFO: Extending PYTHONPATH with paths
['C:\\Users\\User\\Desktop\\1']697 INFO: Appending 'datas' from .spec
697 INFO: checking Analysis697 INFO: Building Analysis because Analysis-00.toc is non existent
698 INFO: Initializing module dependency graph...700 INFO: Caching module graph hooks...
713 INFO: Analyzing base_library.zip ...2211 INFO: Loading module hook 'hook-heapq.py' from 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\PyInstaller\\hooks'...
2291 INFO: Loading module hook 'hook-encodings.py' from 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\PyInstaller\\hooks'...3929 INFO: Loading module hook 'hook-pickle.py' from 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\PyInstaller\\hooks'...
5162 INFO: Caching module dependency graph...5261 INFO: Running Analysis Analysis-00.toc
5261 INFO: Looking for Python shared library...5266 INFO: Using Python shared library: C:\Users\User\AppData\Local\Programs\Python\Python312\python312.dll
5266 INFO: Analyzing C:\Users\User\Desktop\1\labirint.py5271 INFO: Analyzing hidden import "'pygame'"
5272 ERROR: Hidden import "'pygame'" not found5272 INFO: Processing module hooks...
5280 INFO: Performing binary vs. data reclassification (4 entries)5292 INFO: Looking for ctypes DLLs
5298 INFO: Analyzing run-time hooks ...5300 INFO: Including run-time hook 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py'
5304 INFO: Looking for dynamic libraries5435 INFO: Extra DLL search directories (AddDllDirectory): []
5435 INFO: Extra DLL search directories (PATH): []5530 WARNING: Library not found: could not resolve 'api-ms-win-crt-heap-l1-1-0.dll', dependency of 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python312\\python312.dll'.
...
...
5649 INFO: Building PYZ because PYZ-00.toc is non existent5649 INFO: Building PYZ (ZlibArchive) C:\Users\User\Desktop\1\build\labirint\PYZ-00.pyz
5896 INFO: Building PYZ (ZlibArchive) C:\Users\User\Desktop\1\build\labirint\PYZ-00.pyz completed successfully.5916 INFO: checking PKG
5916 INFO: Building PKG because PKG-00.toc is non existent5917 INFO: Building PKG (CArchive) labirint.pkg
8032 INFO: Building PKG (CArchive) labirint.pkg completed successfully.8039 INFO: Bootloader C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\run.exe
8039 INFO: checking EXE8040 INFO: Building EXE because EXE-00.toc is non existent
8041 INFO: Building EXE from EXE-00.toc8041 INFO: Copying bootloader EXE to C:\Users\User\Desktop\1\dist\labirint.exe
8145 INFO: Copying icon to EXE8231 INFO: Copying 0 resources to EXE
8231 INFO: Embedding manifest in EXE8317 INFO: Appending PKG archive to EXE
8547 INFO: Fixing EXE headers9551 INFO: Building EXE from EXE-00.toc completed successfully.
Результат запуска labirint.exe

Ответы (1 шт):
Итак, решения нашел, возможно кому-то будет полезно.
Проблема решилась установкой auto-py-to-exe
Установка:
pip install auto-py-to-exe
Запуск
В том же терминале набрать:
auto-py-to-exe
Откроется интерфейс. Осталось только настроить!
В Script Location добавляем путь до нашего исполняемого файла с игрой. Выбираем вариант One File и прячем консоль, выбрав Window Based (hide the console)
Идём в Additional Files и жмем Add Folder, т.к. все медиа-файлы хранятся в одной папке возле исполняемого файла.
Переходим в Advanced
Здесь добавляем pygame только в --hidden-import и -collect-submodules
Далее жмем синию кнопку CONVERT .PY TO .EXE
Уаля, всё готово. Идем забирать всего один файл без всего лишнего.
Также сборщик сгенерировал строку для pyinstaller. Можно, как вариант еще попробоваать воспользоваться им:
pyinstaller --noconfirm --onefile --windowed --add-data "<ПОЛНЫЙ-ПУТЬ-ДО-ПАПКИ-С-МЕДИА>/images:images/" --hidden-import "pygame" --collect-submodules "pygame" "<ПОЛНЫЙ-ПУТЬ-ДО-ИГРА.РУ>/labirint.py"
Вместо
<ПОЛНЫЙ-ПУТЬ-ДО-ПАПКИ-С-МЕДИА>нужно указать свой путь до папки, где у вас находятся картинки и/или музыка.Вместо
<ПОЛНЫЙ-ПУТЬ-ДО-ИГРА.РУ>нужно указать путь до исполняемого файла с исходным кодом.
Можно без попробовать указания абсолютных путей:
pyinstaller --noconfirm --onefile --windowed --add-data "images:images/" --hidden-import "pygame" --collect-submodules "pygame" "labirint.py"


