Хорошо, я разобрался. ПРЕЖДЕ ВСЕГО, если у вас возникла эта проблема, вам нужно сначала добавить следующую строку в свой код:
def reset():
import kivy.core.window as window
from kivy.base import EventLoop
if not EventLoop.event_listeners:
from kivy.cache import Cache
window.Window = window.core_select_lib('window', window.window_impl, True)
Cache.print_usage()
for cat in Cache._categories:
Cache._objects[cat] = {}
if __name__ == '__main__':
reset()
'your app name here'().run()
Это предотвратит запуск приложения (например, когда оно выглядит как загрузка, но ничего не открывается). ПОСЛЕ ЭТОГО вы хотите построить с помощью spe c вот так:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
from kivy_deps import sdl2, glew, gstreamer
a = Analysis(['C:\\Users\\Artur\\PycharmProjects\\gameficacao\\Gameficacao.py'],
pathex=['C:\\Users\\Artur\\Desktop\\Trabalho\\Gameficacao'],
binaries=[],
datas=[('C:/Users/Artur/PycharmProjects/gameficacao/*.kv', '.'), ('C:/Users/Artur/PycharmProjects/gameficacao/img/*.png', './img'),('C:/Users/Artur/PycharmProjects/gameficacao/font/*.ttf', './font'),('C:/Users/Artur/PycharmProjects/gameficacao/som/*.mp3', './som')],
hiddenimports=['pkg_resources.py2_warn','win32timezone','six','packaging','packaging.version','webbrowser','kivy','enchant'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='Gameficacao',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins + gstreamer.dep_bins)],
strip=False,
upx=True,
upx_exclude=[],
name='Gameficacao')
Теперь некоторые вещи здесь ОЧЕНЬ ВАЖНЫ, и приложение, вероятно, не будет работать без него, а именно:
- Строка "from kivy_deps import sdl2, glew, gstreamer" , справа вверху
- Заполнение информационной части Анализа, здесь вам нужно будет указать путь к каждому файлу, который вы будете использовать в своем приложении, включая файл kivy. В качестве примера используйте мой.
- Строка hiddenimports , здесь вы укажете на каждый импорт, который имеет отношение к вашему приложению и который PyInstaller не может сделать. Для начала вы, вероятно, захотите поместить 'pkg_resources.py2_warn' , поскольку PyInstaller не может правильно импортировать его, и он вам понадобится.
- Строка "* [ Дерево (p) для p в (sdl2.dep_bins + glew.dep_bins + gstreamer.dep_bins)], « будет дополнением к импорту, выполненному в начале кода.
Это решило проблему для меня.