title: Unable to get a window, abort
body: <p>I'm getting what seems to be a common error running the Kivy hello world program. I've tried the solutions I've seen here: manually install <code>gstreamer</code>, adding it to <code>PATH</code> and installing <code>PySDL2</code>. My OS is Windows 7, all other version info is in the error log.</p>
  
  <pre><code># 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()
  </code></pre>
  
  <p>The error log:</p>
  
  <pre><code>[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 &lt;thread&gt; for socket
  [INFO              ] [Window      ] Provider: sdl2
  [INFO              ] [GL          ] GLEW initialization succeeded
  [INFO              ] [GL          ] OpenGL version &lt;3.1.0 - Build 8.15.10.2538&gt;
  [INFO              ] [GL          ] OpenGL vendor &lt;Intel&gt;
  [INFO              ] [GL          ] OpenGL renderer &lt;Intel(R) HD Graphics Family&gt;
  [INFO              ] [GL          ] OpenGL parsed version: 3, 1
  [INFO              ] [GL          ] Shading version &lt;1.40  - Intel Build 8.15.10.2538&gt;
  [INFO              ] [GL          ] Texture max size &lt;8192&gt;
  [INFO              ] [GL          ] Texture max units &lt;16&gt;
  [INFO              ] [Shader      ] fragment shader: &lt;No errors.&gt;
  [INFO              ] [Shader      ] vertex shader: &lt;No errors.&gt;
  [INFO              ] [Shader      ] program: &lt;No errors.&gt;
  [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.
  </code></pre>