【问题标题】:Unable to get a window, abort无法获得窗口,中止
【发布时间】:2017-04-03 12:46:15
【问题描述】:

我在运行 Kivy hello world 程序时遇到了一个常见错误。我已经尝试过在这里看到的解决方案:手动安装gstreamer,将其添加到PATH 并安装PySDL2。我的操作系统是 Windows 7,所有其他版本信息都在错误日志中。

# you need this two lines:
import os
os.environ['KIVY_IMAGE'] = 'pil,sdl2'

#kivy program
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

错误日志:

[INFO              ] [Logger      ] Record log in C:\Users\xyz\.kivy\logs\kivy_16-11-19_11.txt
[INFO              ] [Kivy        ] v1.9.1
[INFO              ] [Python      ] v2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)]
[INFO              ] [Factory     ] 179 symbols loaded
[INFO              ] [Image       ] Providers: img_pil, img_sdl2 (img_tex, img_dds, img_ffpyplayer, img_gif ignored)
[INFO              ] [Text        ] Provider: sdl2
[INFO              ] [OSC         ] using <thread> for socket
[INFO              ] [Window      ] Provider: sdl2
[INFO              ] [GL          ] GLEW initialization succeeded
[INFO              ] [GL          ] OpenGL version <3.1.0 - Build 8.15.10.2538>
[INFO              ] [GL          ] OpenGL vendor <Intel>
[INFO              ] [GL          ] OpenGL renderer <Intel(R) HD Graphics Family>
[INFO              ] [GL          ] OpenGL parsed version: 3, 1
[INFO              ] [GL          ] Shading version <1.40  - Intel Build 8.15.10.2538>
[INFO              ] [GL          ] Texture max size <8192>
[INFO              ] [GL          ] Texture max units <16>
[INFO              ] [Shader      ] fragment shader: <No errors.>
[INFO              ] [Shader      ] vertex shader: <No errors.>
[INFO              ] [Shader      ] program: <No errors.>
[CRITICAL          ] [Window      ] Unable to find any valuable Window provider at all!
sdl2 - AttributeError: tobytes
  File "C:\Program Files\python27\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
    cls = cls()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\window_sdl2.py", line 138, in __init__
    super(WindowSDL, self).__init__()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\__init__.py", line 722, in __init__
    self.create_window()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\window_sdl2.py", line 255, in create_window
    super(WindowSDL, self).create_window()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\__init__.py", line 897, in create_window
    self.render_context = RenderContext()
  File "kivy\graphics\instructions.pyx", line 756, in kivy.graphics.instructions.RenderContext.__init__ (kivy\graphics\instructions.c:10729)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 512, in __init__
    self.filename = arg
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 700, in _set_filename
    mipmap=self._mipmap, nocache=self._nocache)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 430, in load
    im = loader(filename, **kwargs)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 198, in __init__
    self._data = self.load(filename)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\img_pil.py", line 101, in load
    return list(self._img_read(im))
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\img_pil.py", line 86, in _img_read
    img_tmp.mode.lower(), img_tmp.tobytes())
  File "C:\Program Files\python27\lib\site-packages\PIL\Image.py", line 514, in __getattr__
    raise AttributeError(name)

[CRITICAL          ] [App         ] Unable to get a Window, abort.
 Exception SystemExit: 1 in 'kivy.properties.dpi2px' ignored
[CRITICAL          ] [App         ] Unable to get a Window, abort.

【问题讨论】:

标签: python kivy


【解决方案1】:

在 cmd 中转到 python34,然后转到 Scripts 并安装以下内容:

pip install --upgrade pip wheel setuptools
pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
pip install kivy.deps.gstreamer
pip install kivy.deps.angle
pip install kivy

【讨论】:

  • 对于像我这样遇到这种情况的人: pip install pypiwin32 可能会出错,因为 pywin32 可能已经安装并且无法卸载。对我来说,当我通过单独的 pip 安装运行第二行中的项目并忽略 pypiwin32 安装错误时,它会起作用。
  • 仅供参考对于那里的人来说,这个很好的答案似乎也适用于其他版本的python。在 python 3.7.3 中运行良好
  • 对我不起作用,Windows 10 和 Python 3.8.6 安装 Kivy 如this post 所述。
  • @user171780 你应该将你的 python 降级到 3.7。 PyInstaller 在 3.8 中无法正常工作
【解决方案2】:

尝试将&lt;python dir&gt;\share\sdl2\bin 放在您的路径中,它应该可以解决问题。问题是它找不到它使用的 sdl2 二进制文件。甚至可能没有任何 PIL window provider,所以使用环境变量不会做任何事情来创建一个窗口(它将被用作图像提供者)。

我对 PySDL2 不是很熟悉,所以我无法为您提供帮助,但是我为 Windows 上的 Kivy 创建了一个 installer 以使初学者更容易。

无论如何,基本上有两种方法:

  1. 您会将bin 文件夹永久放入PATH 变量中

    我认为这真的很愚蠢,除非您确定不会删除 Python 或文件夹,否则您将在 PATH 中拥有一个 ghost 文件夹 + 所有其他程序都可以访问 bin 文件夹中的文件通过PATH

  2. 您将有一个临时执行此操作的批处理文件

    只有从控制台/批处理运行的程序才能访问bin 文件夹。

安装程序会为您执行此操作,实际上甚至可以从头开始安装(没有 Python)或许多其他东西。

如果您还没有安装 Kivy dependencies,请先安装。

【讨论】:

  • 我会尝试并报告。我不再认为我需要 PySDL2,因为 kivy.deps.sdl2 是一个依赖项。
  • 如果您使用 Anaconda C:\Users[USER NAME]\Anaconda2\share\gstreamer\bin
【解决方案3】:

不确定是 Windows 还是 Linux,但在 python-for-android 上,您需要在最顶部放置:

#qpy:kivy
import kivy
kivy.require('1.10.1') # replace with your current kivy version !

【讨论】:

  • 第 1 行。#qpy:kivy 第 2 行。import kivy 第 3 行。kivy.require('1.10.0'),对我来说,只需 pip install kivy 自动完成所有需要的升级。 qpython的荣耀
【解决方案4】:

在虚拟软件(又名 vmbox、vmware)的显示设置中禁用 3D 加速和 2D 视频加速。 我认为这对你有用,经过多次尝试后它对我有用。

【讨论】:

  • 我还通过从 pip 安装 pygame 让它工作。 pip3 install pygame 然后它起作用了,我不必在我的 VM 中禁用 3D 加速。
【解决方案5】:

我刚刚找到了一个快速修复方法

  1. 使用pip 安装 Kivy 后
  2. 导航到C:\Users\(accountname)\.kivy\并打开config.ini文件
  3. multisamples = 0= 2 更改,然后重新启动您的 计算机。这也将保存其他问题,例如

[CRITICAL] [GL ] 要求的最低 OpenGL 版本 (2.0) 不是 找到了!

这适用于我在 Windows 7 64 位、python3.5(32 位)和 Kivy 版本 1.10.0

【讨论】:

    【解决方案6】:

    我使用的是 Windows 10 和 python 3.6,我使用 pip 安装了 kivy。 上述解决方案都没有帮助,但后来我用 pip 卸载了 kivy,并根据https://kivy.org/doc/stable/installation/installation-windows.html#installation 再次使用 conda 安装了 kivy 并且它起作用了。

    为我安装的 conda 包是: 将下载以下软件包:

    package                    |            build
    ---------------------------|-----------------
    freetype-2.8.1             |           vc14_0         469 KB  conda-forge
    sdl2_mixer-2.0.4           |       h6538335_0          83 KB  conda-forge
    sdl2-2.0.10                |       h6538335_0         4.3 MB  conda-forge
    kivy-1.11.1                |   py36hbc14df2_0        20.2 MB  conda-forge
    sdl2_image-2.0.2           |                0         293 KB  conda-forge
    glew-2.0.0                 |    he025d50_1002         722 KB  conda-forge
    sdl2_ttf-2.0.14            |       h8909db8_1          25 KB  conda-forge
    smpeg2-2.0.0               |       h6538335_1         131 KB  conda-forge
    ------------------------------------------------------------
    

    【讨论】:

    • 是的,非常感谢!这对我来说是个问题! :)
    猜你喜欢
    • 2021-07-03
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2018-01-10
    • 2021-06-12
    相关资源
    最近更新 更多