无法在kivy中打开窗口[重复]

Posted

技术标签:

【中文标题】无法在kivy中打开窗口[重复]【英文标题】:Cannot get window to open in kivy [duplicate] 【发布时间】:2019-03-27 18:03:15 【问题描述】:

我开始在我的游戏中使用 kivy,所以在在线学习一些教程时,python shell 会返回这些错误。

[INFO] [Logger] Record log in C:\Users\chi_j\.kivy\logs\kivy_18-10-23_8.txt
[INFO] [Kivy] v1.10.1
[INFO] [Python] v3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)]
[INFO] [Factory] 194 symbols loaded
[INFO] [Image] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO] [Window] Provider: sdl2
[CRITICAL] [Window] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: The specified module could not be found.
  File "C:\Users\chi_j\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
    cls = cls()
  File "C:\Users\chi_j\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 140, in __init__
    super(WindowSDL, self).__init__()
  File "C:\Users\chi_j\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\core\window\__init__.py", line 968, in __init__
    self.create_window()
  File "C:\Users\chi_j\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 272, in create_window
    self.fullscreen, resizable, state)
  File "kivy\core\window\_window_sdl2.pyx", line 125, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
  File "kivy\graphics\cgl.pyx", line 52, in kivy.graphics.cgl.cgl_get_backend_name
  File "kivy\graphics\cgl.pyx", line 60, in kivy.graphics.cgl.cgl_get_backend_name
  File "C:\Users\chi_j\AppData\Local\Programs\Python\Python37-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 583, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1043, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  [CRITICAL] [App] Unable to get a Window, abort.

我已经安装了 docutils、pygments、pypiwin32、kivy.deps.sdl2、kivy.deps.glew 和 Cython。我正在使用 kivy 1.10.1 和 python 3.7.0 我关注的代码是这样的:

from kivy.app import App
from kivy.uix.widget import Widget


class PongGame(Widget):
    pass


class PongApp(App):
    def build(self):
        return PongGame()


if __name__ == '__main__':
    PongApp().run()

我的模块有问题还是代码有问题?

【问题讨论】:

【参考方案1】:

查看Kivy's install Docs 我能够从全新安装中重复您的问题,我在没有先执行依赖项的情况下安装了 kivy。

我通过按顺序运行这些来修复它:

python -m pip install --upgrade pip wheel setuptools

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

python -m pip install kivy.deps.gstreamer

python -m pip install kivy

在运行 Python 3 时,您还需要:

python -m pip install kivy.deps.angle

注意:如果您使用 python2 和 python3 运行环境 - 请确保将 pip 替换为 pip3

【讨论】:

是的,我只运行 python 3.x。我无法安装 kivy.deps.gstreamer,因为它每次达到大约 20% 时都会发布错误,并且由于它仅用于视频流,我认为它不需要。 探索该错误可能会解决您的问题。看起来肯定是一个依赖问题 - 无论如何我都会再次运行依赖步骤,确保您使用 -m。祝你好运! 未来观众注意事项:在安装其他软件包之前卸载 kivy -m 有什么作用? -m 有助于确保执行 pip 的 python 版本引用与该 python 版本相关的 pip 模块:docs.python.org/3/using/cmdline.html#cmdoption-m【参考方案2】:

代码对我来说运行良好。您可能缺少一些依赖项。

您已经列出了我可以看到的所有必需的依赖项,但可能它们没有正确安装:

查看这个答案或下面的答案以获得一些建议:

https://***.com/a/44220712/9742036

使用 pip 安装适用于某些用户:

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

否则他们需要卸载并重新安装或使用 conda。

【讨论】:

我已按要求使用链接文章中的内容更新了我的答案。

以上是关于无法在kivy中打开窗口[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法安装 Kivy(Windows 10,python 3.8)[重复]

如何在 Kivy 中制作重复的旋转动画?

使用几天后应用程序无法打开[重复]

Kivy Popup 无法访问 root 方法

kivy:ImportError:没有名为app的模块[重复]

如何在javafx中创建一个弹出窗口[重复]