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] 无法获取窗口,中止
from kivy.core.window._window_sdl2 import _WindowSDL2Storage [CRITICAL] [App] 无法获取窗口,中止 [重复]