Kivy - 无法获得窗口,中止

Posted

技术标签:

【中文标题】Kivy - 无法获得窗口,中止【英文标题】:Kivy - Unable to get a Window, abort 【发布时间】:2021-07-03 17:09:41 【问题描述】:

当我运行一个简单的 python kivy 代码时,我得到了如下所示的内容,我得到了 Unable to get a Window, abort 错误。 代码:

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput

class MyApp(App):
    def build(self):
        return Label(text="sinai cpa")

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

错误:

[INFO   ] [Logger      ] Record log in C:\Users\Kfir Sinai\.kivy\logs\kivy_21-04-07_2.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "C:\Users\Kfir Sinai\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "C:\Users\Kfir Sinai\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pil (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - ImportError: DLL load failed while importing _window_sdl2: The specified module could not be found.
  File "C:\Users\Kfir Sinai\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\kivy\core\__init__.py", line 58, in core_select_lib
    mod = __import__(name='2.0.1'.format(
  File "C:\Users\Kfir Sinai\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\kivy\core\window\window_sdl2.py", line 27, in <module>
    from kivy.core.window._window_sdl2 import _WindowSDL2Storage

[CRITICAL] [App         ] Unable to get a Window, abort.

有什么帮助吗??

【问题讨论】:

***.com/questions/40697876/… 【参考方案1】:

我在同一个问题上苦苦挣扎了几天,最后我没有得到那个错误。 (我不会说我明白了,因为我仍然不知道它的意义何在 :) 我正在使用 PyCharm,我删除了整个安装的 kivy 模块和我的旧 kivy 项目 - 文件。之后我安装了 3.6 版本的 python(我使用的是 3.9 版本),我创建了一个新的虚拟环境并将项目解释器设置为 3.6 版本。您应该检查新环境的模块堆栈,不应该有您的全局 python 模块并使用 PyCharm 的功能安装 kivy 模块。毕竟它对我有用......所以我认为这是文件名和模块或虚拟环境之间的一种冲突,但最重要的是我不再有这个问题,我希望我的解决方案对你或其他人有用访客。祝你有美好的一天...

【讨论】:

【参考方案2】:

我不知道你是否已经解决了这个问题,但是我也为这个问题而苦苦挣扎,并且必须解决一些依赖问题。解决创建虚拟环境

python -m pip install --upgrade pip setuptools wheel virtualenv

python -m virtualenv kivy_venv

如果你在 windows cmd shell 上做

kivy_venv\Scripts\activate

否则

source kivy_venv/Scripts/activate

一个 kivy_env 文件夹将在您当前的路径中创建;对我来说是

F:\Job\Info\Desktop Software development\Kivy>

因此 kivy_env 已在 kivy 文件夹中创建。虚拟环境将被激活

下一步做(注意要安装新的kivy rc2,你需要添加--pre到pip)

pip install kivy_deps.glew kivy_deps.sdl2 kivy_deps.gstreamer kivy kivy_examples --pre

现在,如果您运行您的代码(请注意,“代码文件”应该在您创建虚拟环境的同一目录中,在我的情况下它是 kivy)将起作用。

如果您不想使用虚拟环境而不是停用虚拟环境

kivy_venv\Scripts\deactivate

并安装 kivy 及其所有依赖项

python -m pip install --upgrade pip wheel setuptools
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew --extra-index-url https://kivy.org/downloads/packages/simple/
python -m pip install kivy

之后转到为虚拟环境安装 kivy 的文件夹。对我来说是

F:\Job\Info\Desktop Software development\Kivy\kivy_env\Lib\site-packages\

然后将“kivy”文件夹复制到您的 python 路径之一。我的是

E:\Programmes\Python\Python39\Lib\site-packages

然后将“共享”文件夹从“F:\Job\Info\Desktop Software development\Kivy\kivy_env”复制到您的 python 路径之一。我的是

E:\Programmes\Python\Python39\

现在,如果您从任何地方运行您的代码,它应该可以工作。 (您粘贴文件夹的路径应该在

系统路径

希望这对你有用。

感谢JavapocalypseIssue和Issue#6342的回答

【讨论】:

以上是关于Kivy - 无法获得窗口,中止的主要内容,如果未能解决你的问题,请参考以下文章

Kivy错误:[CRITICAL] [App]无法获得一个窗口,中止

Kivy 错误:[CRITICAL] [App] 无法获取窗口,中止

带有 Kivy 错误的 Pycharm [CRITICAL] [App] 无法获取窗口,中止

从终端启动 kivy GUI 应用程序

from kivy.core.window._window_sdl2 import _WindowSDL2Storage [CRITICAL] [App] 无法获取窗口,中止 [重复]

Kivy - 错误无法获得权限?