2017-01-16 11 views
0

Его дни были с тех пор, как iam застрял в этой ошибке. Как вы можете видеть в журнале, есть последняя версия Kivy и Python, но я получаю PermissionError и NotImplementedError. Я попытался запустить его как суперпользователя, но он все еще не работает, поскольку я знаю, что он должен работать без него.Kivy - NotImplementedError: tostring() был удален

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

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... 

ответ

0

Я не уверен в PermissionError, но могу помочь решить проблему NotImplementedError. Это может, в свою очередь, решить PermissionError.

Вы используете Python-модуль PIL, который имел функцию tostring(), но вместо этого он был заменен на tobytes(). Однако пакет kivy не обновлен, поэтому он по-прежнему вызывает tostring(), который устарел.

Итак, переходим к

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

на вашей машине и изменение линии 57 из

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

в

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

Это должно решить проблему вам.

При попытке отредактировать файл он может сказать, что у вас нет необходимых прав для их редактирования. Если да, то я бы рекомендовал ввести командную строку (или терминал/Any bash console) sudo idle. Затем, начиная с простоя, откройте файл и отредактируйте его. (NB вы можете отредактировать его в любом случае с помощью sudo, например sudo nano и т. Д.).

+0

Спасибо, текст визуализируется. iam по-прежнему получает PermissionError, но это, похоже, не имеет никакого эффекта ... Последняя версия Kivy была 1 год назад, а на github у них много активности, почему они не выпускают новую версию? –

+0

@GeorgeShalvashvili, я не уверен. Возможно, он предназначен для работы с более старой версией PIL (befrore 'tostring' был удален). Или вы как-то не получили самую последнюю версию ...? Я бы не стал беспокоиться об этом. Не стесняйтесь публиковать это исправление (ссылка на эту страницу, если хотите) где-нибудь, где это увидит Kivy devs (может быть, Github?), Они могут объяснить, почему это не работает из коробки. – tburrows13

+0

И если это решит вашу ошибку, отметьте ее как «ответ», нажав на галочку под символами «вверх-вниз»/«вниз». – tburrows13

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

  • Нет связанных вопросов^_^