Skip to main content
 首页 » 编程设计

" when freezing kivy application using pyinstaller" rel="bookmark">python之SDL2 错误 : "Unable to load image default.png>" when freezing kivy application using pyinstaller

2025年05月04日27开发

我无法使用 pyinstaller 生成可运行的 exe(应用程序的名称是 settings_gui)。

运行时错误:(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 

出了什么问题?我检查了 <project_path>/dist/settings_gui/kivy_install/data/glsl/default.png , 在那。我觉得很奇怪,但是路径是 SETTING~1 ,这正常吗?我看过this thread建议通过 _MEIPASS 重定向资源,但这并没有帮助 - 意料之中,因为我没有在单文件模式下构建我的应用程序。

如有任何关于如何解决此问题的提示,我们将不胜感激。

编辑:

更多信息:

  • 没有 pyinstaller,该应用程序运行得非常好——除非我关闭它或以其他方式停止它;当我这样做时,python 崩溃了。
  • 当我构建我的应用程序时,一个 kivy 窗口打开并立即崩溃。我总是关闭它并继续构建过程。
  • My .spec file
  • Logs of the build

请您参考如下方法:

我设法通过复制文件解决了这个问题

From: [Python]\share\sdl2\bin\libpng16-16.dll 
To:   [Dist]\<projectName>\libpng16-16.dll 

该文件的实例已经存在,但我用它替换的那个大约大 20kb(从 198kb 到 213kb)。

重要的是我的应用程序现在可以运行了,我没有做任何其他更改。