Kivy - windows - 根本找不到任何有价值的窗口提供程序

Posted

技术标签:

【中文标题】Kivy - windows - 根本找不到任何有价值的窗口提供程序【英文标题】:Kivy - windows - Unable to find any valuable Window provider at all 【发布时间】:2017-04-07 18:04:36 【问题描述】:

我从 kivy 开始。这是我正在运行的示例代码。

import kivy
from kivy.app import App
from kivy.uix.button import Label
kivy.require('1.9.0')


class HelloApp(App):
    def build(self):
        return Label(text='Hello World!')

if __name__ == "__main__":
    HelloApp().run()

这是我得到的回溯:

[INFO              ] [Logger      ] Record log in C:\Users\monac\.kivy\logs\kivy_16-11-23_9.txt
[INFO              ] [Kivy        ] v1.9.1
[INFO              ] [Python      ] v3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)]
[INFO              ] [Factory     ] 179 symbols loaded
[INFO              ] [Image       ] Providers: img_tex, img_dds, img_gif, img_sdl2 (img_pil, img_ffpyplayer ignored)
[INFO              ] [Text        ] Provider: sdl2
[INFO              ] [OSC         ] using <thread> for socket
[INFO              ] [Window      ] Provider: sdl2
[INFO              ] [GL          ] GLEW initialization succeeded
[INFO              ] [GL          ] OpenGL version <b'4.5.0 NVIDIA 373.06'>
[INFO              ] [GL          ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO              ] [GL          ] OpenGL renderer <b'GeForce GTX 960M/PCIe/SSE2'>
[INFO              ] [GL          ] OpenGL parsed version: 4, 5
[INFO              ] [GL          ] Shading version <b'4.50 NVIDIA'>
[INFO              ] [GL          ] Texture max size <16384>
[INFO              ] [GL          ] Texture max units <32>
[WARNING           ] [Image       ] Unable to load image <C:\Python34\lib\site-packages\kivy\data\glsl\default.png>
[CRITICAL          ] [Window      ] Unable to find any valuable Window provider at all!
sdl2 - Exception: SDL2: Unable to load image
  File "C:\Python34\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
    cls = cls()
  File "C:\Python34\lib\site-packages\kivy\core\window\window_sdl2.py", line 138, in __init__
    super(WindowSDL, self).__init__()
  File "C:\Python34\lib\site-packages\kivy\core\window\__init__.py", line 722, in __init__
    self.create_window()
  File "C:\Python34\lib\site-packages\kivy\core\window\window_sdl2.py", line 255, in create_window
    super(WindowSDL, self).create_window()
  File "C:\Python34\lib\site-packages\kivy\core\window\__init__.py", line 897, in create_window
    self.render_context = RenderContext()
  File "kivy\graphics\instructions.pyx", line 756, in kivy.graphics.instructions.RenderContext.__init__ (kivy\graphics\instructions.c:10729)
  File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 512, in __init__
    self.filename = arg
  File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 700, in _set_filename
    mipmap=self._mipmap, nocache=self._nocache)
  File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 430, in load
    im = loader(filename, **kwargs)
  File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 198, in __init__
    self._data = self.load(filename)
  File "C:\Python34\lib\site-packages\kivy\core\image\img_sdl2.py", line 42, in load
    raise Exception('SDL2: Unable to load image')

[CRITICAL          ] [App         ] Unable to get a Window, abort.
 Exception ignored in: 'kivy.properties.dpi2px'
 Traceback (most recent call last):
   File "C:\Python34\lib\site-packages\kivy\utils.py", line 513, in __get__
     retval = self.func(inst)
   File "C:\Python34\lib\site-packages\kivy\metrics.py", line 175, in dpi
     EventLoop.ensure_window()
   File "C:\Python34\lib\site-packages\kivy\base.py", line 126, in ensure_window
     sys.exit(1)
 SystemExit: 1
[CRITICAL          ] [App         ] Unable to get a Window, abort.

我在 Windows 10 64 位上运行。我已经安装了除了 gstreamer 之外的所有依赖项,目前我不需要。

我也不确定为什么会收到此错误:

[WARNING           ] [Image       ] Unable to load image <C:\Python34\lib\site-packages\kivy\data\glsl\default.png>

文件存在,我以管理员身份运行代码以避免访问权限问题。

谢谢。

【问题讨论】:

您是否安装了pygame @AminEtesamian,不。但是对于这个版本的 kivy,它不是必需的。 我之前也遇到过这个错误,解决方法是安装pygame。我知道屏幕提供程序是 sdl2 但这对我有用 @AminEtesamian,我尝试安装 pygame。我仍然有同样的错误。感谢您尝试提供帮助。还有其他想法吗? kivy - unable to get a window, abort的可能重复 【参考方案1】:

您必须为 Kivy 安装依赖项。

按照说明here

python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew

会做你需要的。

【讨论】:

【参考方案2】:

在使用 --system-site-packages 创建我的 virtualenv 之前,我在安装 kivy 及其依赖项之后遇到了同样的错误。为了解决这个问题,我不得不离开我的 virtualenv,卸载所有包 kivy,进入我的 virtualenv,然后重新安装。

【讨论】:

【参考方案3】:

你必须安装所有依赖项 详细检查此网址 https://kivy.org/docs/installation/installation-windows.html#kivy-dependencies 我一步一步地跟着 不要忘记安装 kivy.deps.angle、kivy.deps.glew、kivy.deps.gstreamer、kivy.deps.sdl2

【讨论】:

【参考方案4】:

在虚拟软件(又名 vmbox、vmware)的显示设置中禁用 3D 加速和 2D 视频加速。我认为这对你有用,经过多次尝试后它对我有用。

【讨论】:

【参考方案5】:

有些人在使用 pyinstaller 生成的 dist 时可能会遇到同样的问题。

Kivy 文档提醒开发人员添加这些依赖项。 https://kivy.org/doc/stable/guide/packaging-windows.html#pyinstaller-default-hook

但我必须添加 angle 以使其在我的上下文中工作。

from kivy_deps import sdl2, glew, angle

coll = COLLECT(exe, Tree('examples-path\\demo\\touchtracer\\'),
               a.binaries,
               a.zipfiles,
               a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins+ angle.dep_bins)],
               strip=False,
               upx=True,
               name='touchtracer')

【讨论】:

以上是关于Kivy - windows - 根本找不到任何有价值的窗口提供程序的主要内容,如果未能解决你的问题,请参考以下文章

切换驱动程序后 Kivy 找不到 Window 提供程序

如何在 Windows 上将 kivy 应用程序 (.py) 转换为 apk?

pyinstaller .exe 找不到“dateutil.tz.__init__.tz”

在 Anaconda 中安装 Kivy

Kivy 启动器:找不到路径 /storage/emulated/0/kivy

Kivy:[错误] [AudioGstplayer] 找不到资源