2016-07-15 3 views
1

Я пытаюсь сделать простое приложение, сделанное из Kivy на Windows:я всегда получаю эту ошибку при создании приложения Kivy

import kivy 
from kivy.app import App 
from kivy.uix.label import Label 


class MyApp(App): 

    def build(self): 
     return Label(text='Hello world') 


if __name__ == '__main__': 
    MyApp().run() 

(EDIT) Но каждый раз, когда я получаю эту ошибку очень долго; это все это:

[INFO    ] [Logger  ] Record log in C:\Users\danie\.kivy\logs\kivy_16-07-15_5.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.4.0 - Build 10.18.15.4271'> 
[INFO    ] [GL   ] OpenGL vendor <b'Intel'> 
[INFO    ] [GL   ] OpenGL renderer <b'Intel(R) HD Graphics 530'> 
[INFO    ] [GL   ] OpenGL parsed version: 4, 4 
[INFO    ] [GL   ] Shading version <b'4.40 - Build 10.18.15.4271'> 
[INFO    ] [GL   ] Texture max size <16384> 
[INFO    ] [GL   ] Texture max units <32> 
[INFO    ] [Shader  ] fragment shader: <b"WARNING: 0:6: '' : #version directive missing"> 
[INFO    ] [Shader  ] vertex shader: <b"WARNING: 0:6: '' : #version directive missing"> 
[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. 

Я не могу понять, почему эта ошибка появляется, вы можете помочь мне в этом?

+0

Опубликовать полный журнал. – inclement

+0

Извините, теперь его полный. –

+0

У вас установлен SDL? – Dave

ответ

1

Хотя инструкции по установке говорят, что gstreamer не является обязательным. Мне пришлось установить его, чтобы заставить kivy работать (окна). Как и на странице установки:
python -m pip install kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/

(удаление воспроизвели ошибку выше, установка снова установил его снова)

+0

Ваша спасательная игра –

+1

Если вы получаете сообщение об ошибке при попытке установить gstreamer, вы можете скачать его непосредственно по этой ссылке: https://kivy.org/downloads/appveyor/deps/gstreamer/ Затем вы можете установите его прямо в свою папку с помощью: python -m pip install kivy.deps.gstreamer-0.1.5-cp34-none-win_amd64.whl (или, какую бы версию gstreamer вы не загрузили.) – Ideae

1

GStreamer было предложено ввести в заблуждение в моем случае, так как кажется, она была установлена ​​ранее 1.9.1 версия, которую я использую. Ошибка описана в небольшом неясного проход документации here:

Если kivy не был установлен с помощью метода колеса эти команды не будут работать и, например kivy.deps.sdl2 не сможет импортировать. Вместо этого нужно найти расположение этих dll и вручную передать их в класс Tree аналогично примеру.

В основном это проблема с двоичным/dll в Windows, вызванная тем фактом, что я не использую «метод колес» (так как я использовал virtualenv и сделал мой набор для установки там). Я исправил этот путь:

  1. Найдите папку общего доступа python на окнах. Например. в virtualenv вы найдете его на X: \ virtualentpath \ доля
  2. Скопируйте Glew и sdl2 каталог
  3. После того как вы сделали step 2 here и до стадии 3, в DIST папке создать папку с акций и вставьте Glew и СВД каталоги в нем
  4. Добавить путь библиотеки в myappname.spec файл

    coll = COLLECT(exe, 
    Tree('dist\\share\\glew\\bin\\'), 
    Tree('dist\\share\\sdl2\\bin\\'), 
    Tree('c:\\Users\\myuser\\PycharmProjects\\myappname\\'), 
         a.binaries, 
         a.zipfiles, 
         a.datas, 
         strip=False, 
         upx=True, 
         name='myappname') 
    

Если вам нужен gstreamer, вы должны добавить его, , если вам не нужно, чтобы вы не указали. Это важно, потому что только GStreamer библиотека что-то вроде 44 раз больше, чем основные два:

  • GLEW + SDL = 7.31MB
  • GStreamer = 323MB

Я не знаю, если это но после того, как я наткнулся на красную сельдь за другой через несколько часов, это только метод, который работает в моем случае.

Перезапись последнего абзаца в документации Kivy поможет в этом случае в Windows.

Смежные вопросы