0

当我运行一个简单的 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.

有什么帮助吗??

4

2 回答 2

1

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

于 2021-08-25T20:21:43.880 回答
0

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

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\

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

系统路径

希望这对你有用。

感谢Javapocalypse IssueIssue#6342的回答

于 2021-11-19T15:16:48.473 回答