Kivy报错Unable to get a Window, abort 求助(Win7+Anaconda3.8.5)
Kivy 着色器链接失败(GL错误1282)问题解决
环境信息
- 系统:Windows 7
- Python版本:Anaconda 3.8.5
- Kivy版本:2.0.0
- 已配置环境变量:
KIVY_GL_BACKEND=angle_sdl2
用户代码
from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello world', text_size = 32) MyApp().run()
报错信息(翻译后)
[INFO ] [Logger ] 日志记录在 C:\Users\FARHAN\.kivy\logs\kivy_22-07-22_15.txt [INFO ] [Kivy ] v2.0.0 [INFO ] [Kivy ] 安装路径:"C:\Users\FARHAN\anaconda3\lib\site-packages\kivy\__init__.py" [INFO ] [Python ] v3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] [INFO ] [Python ] 解释器路径:"C:\Users\FARHAN\anaconda3\python.exe" [INFO ] [Factory ] 已加载186个符号 [INFO ] [Image ] 提供器:img_tex, img_dds, img_sdl2, img_pil (忽略img_ffpyplayer) [INFO ] [Text ] 提供器:sdl2 [INFO ] [Window ] 提供器:sdl2 [INFO ] [Window ] 激活GLES2/ANGLE上下文 [INFO ] [GL ] 使用"OpenGL"图形系统 [INFO ] [GL ] 使用的后端 <angle_sdl2> [INFO ] [GL ] OpenGL版本 <b'OpenGL ES 2.0 (ANGLE 2.1.0.8613f4946861)'> [INFO ] [GL ] OpenGL厂商 <b'Google Inc.'> [INFO ] [GL ] OpenGL渲染器 <b'ANGLE (英特尔(R) 迅驰移动45芯片组家族 (微软公司 - WDDM 1.1) Direct3D11 vs_4_0 ps_4_0)'> [INFO ] [GL ] OpenGL解析版本:2, 0 [INFO ] [GL ] 着色器版本 <b'OpenGL ES GLSL ES 1.00 (ANGLE 2.1.0.8613f4946861)'> [INFO ] [GL ] 纹理最大尺寸 <8192> [INFO ] [GL ] 纹理最大单元数 <16> [ERROR ] [Shader ] GL错误1282 [INFO ] [Shader ] 程序:<创建D3D着色器失败> [CRITICAL] [Window ] 无法找到可用的窗口提供器。请启用调试日志(例如命令行运行时添加-d参数,或修改配置中的日志级别)并重新运行应用以排查原因 sdl2 - 异常:着色器未链接,请检查信息日志。 File "C:\Users\FARHAN\anaconda3\lib\site-packages\kivy\core\__init__.py", line 70, in core_select_lib cls = cls() File "C:\Users\FARHAN\anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 152, in __init__ super(WindowSDL, self).__init__() File "C:\Users\FARHAN\anaconda3\lib\site-packages\kivy\core\window\__init__.py", line 982, in __init__ self.create_window() File "C:\Users\FARHAN\anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 311, in create_window super(WindowSDL, self).create_window() File "C:\Users\FARHAN\anaconda3\lib\site-packages\kivy\core\window\__init__.py", line 1268, in create_window self.render_context = RenderContext() File "kivy\graphics\instructions.pyx", line 777, in kivy.graphics.instructions.RenderContext.__init__ File "kivy\graphics\shader.pyx", line 184, in kivy.graphics.shader.Shader.__init__ File "kivy\graphics\shader.pyx", line 701, in kivy.graphics.shader.Shader.vs.__set__ File "kivy\graphics\shader.pyx", line 557, in kivy.graphics.shader.Shader.build_vertex File "kivy\graphics\shader.pyx", line 587, in kivy.graphics.shader.Shader.link_program [CRITICAL] [App ] 无法获取窗口,终止程序。
解决方法
1. 降级Kivy到1.11.1版本
Kivy 2.0.0对旧显卡(如你的Intel Mobile 45 Express Chipset)兼容性不佳,降级到1.11.1可解决着色器链接问题:
pip install kivy==1.11.1 --force-reinstall
2. 切换GL后端
尝试更换其他GL后端,设置对应的环境变量后重启终端/IDE再运行:
- 设置
KIVY_GL_BACKEND=sdl2 - 或
KIVY_GL_BACKEND=glew
3. 更新显卡驱动
虽然Windows 7已停止官方支持,但可尝试寻找适配Intel Mobile 45 Express Chipset的驱动版本,更新后可能修复OpenGL兼容性问题。
4. 修正代码参数错误
你的代码中Label的text_size参数使用错误,该参数需传入元组(宽, 高)而非数值,同时漏掉了App的导入,修正后代码:
from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello world', text_size=(200, 50)) MyApp().run()
(注:此参数错误不会导致着色器问题,但会影响Label显示效果,建议修正)
内容的提问来源于stack exchange,提问作者Mr Farhan
相关产品推荐
相关产品推荐

