2017-03-08 1 views
0

Je ne parviens pas à produire un fichier EXE avec pyinstaller (le nom de l'application est settings_gui).Erreur SDL2: "Impossible de charger l'image <default.png>" lors du blocage de l'application kivy à l'aide de pyinstaller

Erreur d'exécution: (Full log)

[WARNING   ] [Image  ] Unable to load image <<project_path>\dist\SETTIN~1\kivy_install\data\glsl\default.png> 
[CRITICAL   ] [Window  ] Unable to find any valuable Window provider 
at all! 
sdl2 - Exception: SDL2: Unable to load image 
    File "site-packages\kivy\core\__init__.py", line 67, in core_select_lib 
    File "site-packages\kivy\core\window\window_sdl2.py", line 138, in __init__ 
    File "site-packages\kivy\core\window\__init__.py", line 722, in __init__ 
    File "site-packages\kivy\core\window\window_sdl2.py", line 255, in create_wind 
ow 
    File "site-packages\kivy\core\window\__init__.py", line 897, in create_window 
    File "kivy\graphics\instructions.pyx", line 756, in kivy.graphics.instructions 
.RenderContext.__init__ (kivy\graphics\instructions.c:10729) 
    File "site-packages\kivy\core\image\__init__.py", line 512, in __init__ 
    File "site-packages\kivy\core\image\__init__.py", line 700, in _set_filename 
    File "site-packages\kivy\core\image\__init__.py", line 430, in load 
    File "site-packages\kivy\core\image\__init__.py", line 198, in __init__ 
    File "site-packages\kivy\core\image\img_sdl2.py", line 42, in load 

[CRITICAL   ] [App   ] Unable to get a Window, abort. 
Exception SystemExit: 1 in 'kivy.properties.dpi2px' ignored 
[INFO    ] [Text  ] Provider: sdl2 
Traceback (most recent call last): 
    File "settings_gui.py", line 26, in <module> 
AttributeError: 'NoneType' object has no attribute 'clearcolor' 
Failed to execute script settings_gui 

Qu'est-ce qui ne va pas? J'ai vérifié <project_path>/dist/settings_gui/kivy_install/data/glsl/default.png, c'est là. Je trouve cependant bizarre que le chemin soit SETTING~1, est-ce normal? J'ai vu this thread qui recommande de rediriger les ressources à travers _MEIPASS, mais cela n'aide pas - attendu, puisque je ne construis pas mon application en mode un-fichier.

Tout conseil sur la façon de résoudre ce problème est apprécié.

Modifier:

Plus d'info:

  • Sans pyinstaller, l'application fonctionne parfaitement bien - sauf quand je ferme ou arrêter autrement; quand je fais ça, python se bloque.
  • Lorsque je crée mon application, une fenêtre de Kivy s'ouvre et se bloque immédiatement. Je le ferme toujours et le processus de construction continue.
  • My .spec file
  • Logs of the build

Répondre

1

Je vais avoir le même problème.

De Kivy docs

Alternate installations

The previous examples used e.g. *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins + gstreamer.dep_bins)], to make PyInstaller add all the dlls used by these dependencies. If kivy was not installed using the wheels method these commands will not work and e.g. kivy.deps.sdl2 will fail to import. Instead, one must find the location of these dlls and manually pass them to the Tree class in a similar fashion as the example.

Changé

*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)], 

à quelque chose comme

Tree('C:\\Python27\\share\\sdl2\\bin\\'), 
Tree('C:\\Python27\\share\\glew\\bin\\'), 

Il reste encore à fermer un bâtiment de fenêtre pyinstaller, mais maintenant les travaux .exe d'application

+0

Merci. Je vais essayer ça. Cependant, comme mon installation de Windows était en quelque sorte cassée, j'ai décidé d'installer Win7 sur VirtualBox et de construire à partir de là - cela a fonctionné parfaitement, même si je n'ai pas utilisé de roues là-bas non plus. | Si 'sdl2.dep_bins' ne fonctionnait pas, il n'y aurait pas de' sdl2.dll' et default.png et d'autres dossiers, non? Parce qu'ils étaient tous là. – Nearoo