2017-01-16 5 views
0

Es sind Tage seit iam mit diesem Fehler stecken geblieben. Wie Sie im Protokoll sehen können, haben Sie die neueste Version von Kivy und Python, aber ich bekomme PermissionError und NotImplementedError. Ich habe versucht, es als Superuser auszuführen, aber es funktioniert immer noch nicht, da ich weiß, dass es ohne es funktionieren muss.Kivy - NotImplementedError: tostring() wurde entfernt

Wenn ich es starte, erscheint ein Fenster, aber es gibt überhaupt keinen Text, es gibt nur ein Artefakt in der Mitte, das verschwindet, wenn ich auf den Knopf klicke, alles andere scheint in Ordnung zu sein.

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 /home/shalva/.kivy/logs/kivy_17-01-16_7.txt 
[INFO    ] [Kivy  ] v1.9.1 
[INFO    ] [Python  ] v3.6.0 (default, Dec 24 2016, 08:03:08) 
[GCC 6.2.1 20160830] 
[INFO    ] [Factory  ] 179 symbols loaded 
[INFO    ] [Image  ] Providers: img_tex, img_dds, img_gif, img_sdl2, img_pil (img_ffpyplayer ignored) 
[INFO    ] [Text  ] Provider: pil(['text_sdl2'] ignored) 
[INFO    ] [OSC   ] using <multiprocessing> for socket 
[INFO    ] [Window  ] Provider: sdl2(['window_egl_rpi'] ignored) 
[INFO    ] [GL   ] OpenGL version <b'3.0 Mesa 13.0.3'> 
[INFO    ] [GL   ] OpenGL vendor <b'Intel Open Source Technology Center'> 
[INFO    ] [GL   ] OpenGL renderer <b'Mesa DRI Intel(R) Sandybridge Mobile '> 
[INFO    ] [GL   ] OpenGL parsed version: 3, 0 
[INFO    ] [GL   ] Shading version <b'1.30'> 
[INFO    ] [GL   ] Texture max size <8192> 
[INFO    ] [GL   ] Texture max units <16> 
[INFO    ] [Window  ] auto add sdl2 input provider 
[INFO    ] [Window  ] virtual keyboard not allowed, single mode, not docked 
[INFO    ] [ProbeSysfs ] device match: /dev/input/event6 
[INFO    ] [MTD   ] Read event from </dev/input/event6> 
[INFO    ] [Base  ] Start application main loop 
[INFO    ] [GL   ] NPOT texture support is available 
Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner 
    self.run() 
    File "/usr/lib/python3.6/threading.py", line 864, in run 
    self._target(*self._args, **self._kwargs) 
    File "/usr/lib/python3.6/site-packages/kivy/input/providers/mtdev.py", line 219, in _thread_run 
    _device = Device(_fn) 
    File "/usr/lib/python3.6/site-packages/kivy/lib/mtdev.py", line 131, in __init__ 
    self._fd = os.open(filename, os.O_NONBLOCK | os.O_RDONLY) 
PermissionError: [Errno 13] Permission denied: '/dev/input/event6' 

Exception ignored in: 'kivy.graphics.instructions.RenderContext.set_texture' 
Traceback (most recent call last): 
    File "kivy/graphics/texture.pyx", line 786, in kivy.graphics.texture.Texture.bind (kivy/graphics/texture.c:10206) 
    File "/usr/lib/python3.6/site-packages/kivy/core/text/__init__.py", line 628, in _texture_fill 
    self.render(real=True) 
    File "/usr/lib/python3.6/site-packages/kivy/core/text/__init__.py", line 573, in render 
    return self._render_real() 
    File "/usr/lib/python3.6/site-packages/kivy/core/text/__init__.py", line 559, in _render_real 
    data = self._render_end() 
    File "/usr/lib/python3.6/site-packages/kivy/core/text/text_pil.py", line 57, in _render_end 
    self._pil_im.mode.lower(), self._pil_im.tostring()) 
    File "/usr/lib/python3.6/site-packages/PIL/Image.py", line 697, in tostring 
    "Please call tobytes() instead.") 
NotImplementedError: tostring() has been removed. Please call tobytes() instead. 
[INFO    ] [Base  ] Leaving application in progress... 

Antwort

0

Ich bin nicht sicher über die PermissionError, aber ich kann helfen, den NotImplementedError zu lösen. Dies kann wiederum den PermissionError lösen.

Sie verwenden das Python-Modul PIL, das früher eine Funktion tostring() hatte, aber stattdessen in tobytes() geändert wurde. Das kivy-Paket wurde jedoch nicht aktualisiert, sodass es weiterhin tostring() aufruft, das veraltet ist.

So gehen, zu

/usr/lib/python3.6/site-packages/kivy/core/text/text_pil.py

auf Ihrem Rechner und Änderungslinie 57 von

self._pil_im.mode.lower(), self._pil_im.tostring()) 

zu

self._pil_im.mode.lower(), self._pil_im.tobytes()) 

Diese sollten Sie Problem lösen.

Wenn Sie versuchen, die Datei zu bearbeiten, wird Ihnen möglicherweise mitgeteilt, dass Sie nicht über die erforderlichen Berechtigungen zum Bearbeiten der Datei verfügen. Wenn ja, dann würde ich empfehlen, in der Befehlszeile (oder Terminal/Any bash console) sudo idle einzugeben. Öffnen Sie dann im Leerlauf die Datei und bearbeiten Sie sie. (NB, Sie können es trotzdem beliebig bearbeiten mit sudo, z. B. sudo nano usw.).

+0

Danke, Text wird gerendert. Ich bekomme immer noch PermissionError, aber es scheint keine Wirkung zu haben ... Last Kivy Release war vor 1 Jahr und auf GitHub haben sie eine Menge Aktivität, warum veröffentlichen sie keine neue Version? –

+0

@GeorgeShalvashvili, ich bin mir nicht sicher. Es ist vielleicht so konzipiert, dass es mit älteren Versionen von PIL funktioniert (before 'tostring' wurde entfernt). Oder hast du irgendwie nicht die neueste Version ...? Ich würde mir keine Sorgen machen. Fühlen Sie sich frei, dieses Update (Link zu dieser Seite, wenn Sie möchten) irgendwo, wo Kivy Devs es sehen werden (vielleicht Github?), Sie könnten in der Lage zu erklären, warum es nicht aus der Box funktioniert. – tburrows13

+0

Und wenn dies Ihren Fehler behoben hat, markieren Sie ihn bitte als "beantwortet", indem Sie auf das Häkchen unter den Upvote/Downvote-Symbolen klicken. – tburrows13

Verwandte Themen