我从kivy开始。这是我正在运行的示例代码。
import kivy
from kivy.app import App
from kivy.uix.button import Label
kivy.require('1.9.0')
class HelloApp(App):
def build(self):
return Label(text='Hello World!')
if __name__ == "__main__":
HelloApp().run()
这是我得到的追溯:
[INFO ] [Logger ] Record log in C:\Users\monac\.kivy\logs\kivy_16-11-23_9.txt
[INFO ] [Kivy ] v1.9.1
[INFO ] [Python ] v3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)]
[INFO ] [Factory ] 179 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_gif, img_sdl2 (img_pil, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [OSC ] using <thread> for socket
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] OpenGL version <b'4.5.0 NVIDIA 373.06'>
[INFO ] [GL ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO ] [GL ] OpenGL renderer <b'GeForce GTX 960M/PCIe/SSE2'>
[INFO ] [GL ] OpenGL parsed version: 4, 5
[INFO ] [GL ] Shading version <b'4.50 NVIDIA'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[WARNING ] [Image ] Unable to load image <C:\Python34\lib\site-packages\kivy\data\glsl\default.png>
[CRITICAL ] [Window ] Unable to find any valuable Window provider at all!
sdl2 - Exception: SDL2: Unable to load image
File "C:\Python34\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
cls = cls()
File "C:\Python34\lib\site-packages\kivy\core\window\window_sdl2.py", line 138, in __init__
super(WindowSDL, self).__init__()
File "C:\Python34\lib\site-packages\kivy\core\window\__init__.py", line 722, in __init__
self.create_window()
File "C:\Python34\lib\site-packages\kivy\core\window\window_sdl2.py", line 255, in create_window
super(WindowSDL, self).create_window()
File "C:\Python34\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:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 512, in __init__
self.filename = arg
File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 700, in _set_filename
mipmap=self._mipmap, nocache=self._nocache)
File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 430, in load
im = loader(filename, **kwargs)
File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 198, in __init__
self._data = self.load(filename)
File "C:\Python34\lib\site-packages\kivy\core\image\img_sdl2.py", line 42, in load
raise Exception('SDL2: Unable to load image')
[CRITICAL ] [App ] Unable to get a Window, abort.
Exception ignored in: 'kivy.properties.dpi2px'
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\kivy\utils.py", line 513, in __get__
retval = self.func(inst)
File "C:\Python34\lib\site-packages\kivy\metrics.py", line 175, in dpi
EventLoop.ensure_window()
File "C:\Python34\lib\site-packages\kivy\base.py", line 126, in ensure_window
sys.exit(1)
SystemExit: 1
[CRITICAL ] [App ] Unable to get a Window, abort.
我在Windows 10 64位上运行。我已经安装了除了gstreamer
之外的所有依赖项,我目前还不需要。
我也不确定为什么会收到此错误:
[WARNING ] [Image ] Unable to load image <C:\Python34\lib\site-packages\kivy\data\glsl\default.png>
该文件存在,我正在以管理员身份运行我的代码以避免访问权限问题。
谢谢。
答案 0 :(得分:3)
您必须为Kivy安装依赖项。
按照说明here
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
会做你需要的。
答案 1 :(得分:0)
在使用--system-site-packages
创建virtualenv之前安装kivy及其依赖项后,我遇到了同样的错误。要解决它,我不得不离开我的virtualenv,卸载所有包kivy,输入我的virtualenv,然后重新安装。
答案 2 :(得分:0)
你必须安装所有依赖项 详细检查这个网址 https://kivy.org/docs/installation/installation-windows.html#kivy-dependencies 我一步一步地跟着他 别忘了安装 kivy.deps.angle,kivy.deps.glew,kivy.deps.gstreamer,kivy.deps.sdl2
答案 3 :(得分:0)
在虚拟软件(又名vmbox,vmware)的显示设置中,禁用3D加速和2D视频加速。我认为这对你有用,经过多次尝试后它对我有用。
答案 4 :(得分:0)
使用pyinstaller生成的dist时,有些人可能会遇到相同的问题。
Kivy文档提醒开发人员添加这些依赖项。 https://kivy.org/doc/stable/guide/packaging-windows.html#pyinstaller-default-hook
但是我必须添加 angle 才能使其在我的上下文中起作用。
from kivy_deps import sdl2, glew, angle
coll = COLLECT(exe, Tree('examples-path\\demo\\touchtracer\\'),
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins+ angle.dep_bins)],
strip=False,
upx=True,
name='touchtracer')
答案 5 :(得分:-1)
我使用Ubuntu 18.04,我在工作的虚拟环境中安装了pygame。它似乎可以解决该错误。