Kivy: Impossible de trouver un fournisseur de fenêtre valable (symbole indéfini : glGetFramebufferAttachmentParameteriv)

Créé le 23 août 2017  ·  23Commentaires  ·  Source: kivy/kivy

* prepare a short, runnable example that reproduces the issue
* reproduce the problem with the latest development version of Kivy
* double-check that the issue is indeed a bug and not a support request

Versions

  • Python : Python 3.5.2
  • Système d'exploitation : Ubuntu 16.04.3 LTS
  • Kivy : v1.10.0
  • Méthode d'installation de Kivy :

    • Instructions de https://kivy.org/docs/installation/installation-linux.html#installation -in-a-virtual-environment

    • Dépendances de la première installation : python-pip build-essential git python python-dev ffmpeg libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev

    • Autres dépendances : libgstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good

    • Installer Cython : pip install Cython==0.25.2

    • Installer l'oreiller : pip install image

    • Installer Kivy : pip install kivy

La description

J'essaie d'installer kivy sur Ubuntu 16.04, qui s'exécute dans une Virtual Box (Version 5.1.26r117224 (Qt5.6.2) ). Il s'agit de la dernière version de Virtual Box. Le système d'exploitation hôte est Windows 10.

La désactivation de l'accélération 3D entraîne une autre erreur SDL2 :

sdl2 - RuntimeError: b'GLX is not supported'
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/__init__.py", line 67, in core_select_lib
    cls = cls()
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/window/window_sdl2.py", line 140, in __init__
    super(WindowSDL, self).__init__()
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/window/__init__.py", line 899, in __init__
    self.create_window()
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/window/window_sdl2.py", line 269, in create_window
    self.fullscreen, resizable, state)
  File "kivy/core/window/_window_sdl2.pyx", line 142, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window (/tmp/pip-build-jka1zi38/kivy/kivy/core/window/_window_sdl2.c:2782)
  File "kivy/core/window/_window_sdl2.pyx", line 57, in kivy.core.window._window_sdl2._WindowSDL2Storage.die (/tmp/pip-build-jka1zi38/kivy/kivy/core/window/_window_sdl2.c:1872)

Alors peut-être que l'erreur est liée à l'accélération 3D (périphérique), utilisée par VirtualBox ?

Code

Reproduisez le problème dans la console Python interactive :

>>> import kivy
>>> from kivy.core.window import Window

Sortie d'erreur complète

>>> import kivy
Purge log fired. Analysing...
Purge finished!
[INFO   ] [Logger      ] Record log in /home/aadc/.kivy/logs/kivy_17-08-23_1.txt
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609]
>>> from kivy.core.window import Window
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [OSC         ] using <multiprocessing> for socket
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
egl_rpi - ImportError: cannot import name 'bcm'
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
    from kivy.lib.vidcore_lite import bcm, egl

sdl2 - ImportError: /home/aadc/tf_python/lib/python3.5/site-packages/kivy/graphics/cgl_backend/cgl_gl.cpython-35m-x86_64-linux-gnu.so: undefined symbol: glGetFramebufferAttachmentParameteriv
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/__init__.py", line 67, in core_select_lib
    cls = cls()
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/window/window_sdl2.py", line 140, in __init__
    super(WindowSDL, self).__init__()
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/window/__init__.py", line 899, in __init__
    self.create_window()
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/window/window_sdl2.py", line 269, in create_window
    self.fullscreen, resizable, state)
  File "kivy/core/window/_window_sdl2.pyx", line 110, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window (/tmp/pip-build-jka1zi38/kivy/kivy/core/window/_window_sdl2.c:2466)
  File "kivy/graphics/cgl.pyx", line 52, in kivy.graphics.cgl.cgl_get_backend_name (/tmp/pip-build-jka1zi38/kivy/kivy/graphics/cgl.c:3044)
  File "kivy/graphics/cgl.pyx", line 60, in kivy.graphics.cgl.cgl_get_backend_name (/tmp/pip-build-jka1zi38/kivy/kivy/graphics/cgl.c:2879)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 577, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 906, in create_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "kivy/graphics/cgl_backend/cgl_glew.pyx", line 9, in init kivy.graphics.cgl_backend.cgl_glew (/tmp/pip-build-jka1zi38/kivy/kivy/graphics/cgl_backend/cgl_glew.c:3260)

x11 - ImportError: No module named 'kivy.core.window.window_x11'
  File "/home/aadc/tf_python/lib/python3.5/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)

>>> quit()
graphics High

Commentaire le plus utile

pip installer pygame
a résolu le problème pour moi

Ubuntu Linux 17.10 64 bits
Python 3.6.3

gel des pépins
buildozer==0.35.dev0
certificat==2018.4.16
charet==3.0.4
Cython==0.28.2
docutils==0.14
idna==2.6
Kivy==1.10.0
Kivy-Jardin==0.1.4
attendre==4.5.0
lecteur==1.3.1.dev0
ptyprocess==0.5.2
pygame==1.9.3
Pygments==2.2.0
demandes==2.18.4
URLlib3==1.22
virtualenv==15.2.0

Tous les 23 commentaires

Autre remarque : Supprimer et réinstaller l'extension invité VBox n'a pas résolu le problème.

J'essaie d'installer kivy sur Ubuntu 16.04, qui s'exécute dans une Virtual Box (Version 5.1.26r117224 (Qt5.6.2) ).

J'ai exactement la même erreur sur tous les virtualbox 5.x que j'ai essayés (win7pro), je n'ai jamais réussi à le faire fonctionner après la mise à niveau de 4.x. Contrairement à votre rapport, la désactivation de l'accélération 3D a été une solution de contournement fiable pour moi depuis le premier jour, donc je n'ai pas fait de recherches approfondies ou quoi que ce soit.

La sortie glxinfo me semble correcte et je peux exécuter d'autres applications OpenGL (avec des mises en garde ; voir ci-dessous).

$ glxinfo | grep OpenGL
OpenGL vendor string: Humper
OpenGL renderer string: Chromium
OpenGL version string: 2.1 Chromium 1.9
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL extensions:

Je ne sais rien des composants internes de la redirection kivy cgl ou gl, etc., donc je ne sais pas où le symbole est censé être défini, mais il est exporté dans le fichier objet :

$ objdump -t /home/terje/kivy/kivy/graphics/cgl_backend/cgl_gl.cpython-35m-x86_64-linux-gnu.so|grep glGetFramebufferAttachmentParameteriv
0000000000000000       F *UND*  0000000000000000              glGetFramebufferAttachmentParameteriv

La rétrogradation de Kivy à 1.9.1 entraîne pour moi un message d'erreur différent, semble identique à # 4459: ImportError: /home/terje/kivy/kivy/graphics/texture.cpython-35m-x86_64-linux-gnu.so: undefined symbol: glGenerateMipmap . Revenir à 1.8 ne fonctionne pas non plus (mais j'ai exécuté 1.8 avec une accélération 3d sur virtualbox 4.x pendant longtemps sur le même hôte)

Supprimer et réinstaller l'extension invité VBox n'a pas résolu le problème.

À quelques reprises, j'ai demandé à Kivy de démarrer avec l'accélération 3D activée (c'est-à-dire en dépassant le symbole indéfini), en faisant

  1. Boot VM (Kivy plante avec un symbole indéfini)
  2. Désinstaller + réinstaller les ajouts d'invités, sans redémarrage
  3. Démarrer l'application Kivy

L'application démarre et je peux la voir dessiner la fenêtre, mais ensuite tout devient complètement dingue. X ne peut plus être utilisé du tout après cela ; décalage étrange, graphiques cassés, aucune réponse à l'entrée, etc. Cependant, la terminaison de X restaure un état apparemment fonctionnel (j'ai encore ctrl-alt-backspace lié). Notez que j'ai réussi à corrompre complètement une machine virtuelle en répétant plusieurs fois la désinstallation-réinstallation des ajouts d'invités (pas sûr de la procédure exacte). Impossible de revenir à un instantané après cela, alors faites attention en expérimentant une "vraie" machine virtuelle avec des données...

L'état de crash bizarre est systématiquement reproductible sur mon système en exécutant MegaGlest. Le jeu démarre et fonctionne très bien, clairement avec OpenGL qui fonctionne, mais il se bloque à la sortie et laisse la machine virtuelle dans le même état (ou du moins très similaire) comme cela se produit lorsque Kivy dépasse l'erreur de symbole indéfini. Pourriez-vous peut-être essayer de reproduire cela sur votre système? ( sudo apt-get install megaglest; megaglest ). J'ai essayé quelques autres jeux etc et je n'ai pas vu ça.

Aurais-tu par hasard une carte graphique nvidia ? À un moment donné dans le passé, je suis tombé sur une indication que cela pourrait être lié à cela, mais cela ne m'a mené nulle part et je n'ai pas de référence à portée de main.

J'ai le même problème pour Ubuntu 14.04, 15.04, 15.10, 16.04, Debian 9, 8 et 7, Centos 7, Devuan Jessie et certaines versions de Fedora.

Voir la même chose ici sur Linux Mint 18.2 x64, qui est basé sur Ubuntu ( uname -a extrait : 4.10.0-33-generic #37~16.04.1-Ubuntu). Ma VirtualBox est v5.1.28.

Tout d'abord, je ne suis en aucun cas un expert de tout ce qui concerne OpenGL. Cependant, j'ai vu que dans le journal des erreurs de mon script de test, une ligne se plaint de :

File "kivy/graphics/cgl_backend/cgl_glew.pyx", line 9, in init kivy.graphics.cgl_backend.cgl_glew (/tmp/pip-build-05agald7/kivy/kivy/graphics/cgl_backend/cgl_glew.c:3260)

Bien que dans les messages du journal d'initialisation, il n'y ait aucune mention de _glew_, il indique qu'il ignore _sdl2_ pour une raison quelconque :

[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.

J'ai donc essayé à la place :

(.venv) ... $ KIVY_GL_BACKEND=sdl2 python src/main.py

et cela semblait m'avoir au moins une fenêtre. Bien que la notification [INFO ] [Window ] Provider: sdl2(['window_egl_rpi'] ignored) soit toujours là. :en pensant:

TL;DR / Solution de contournement possible :

Selon les docs ( [1] , [2] ), vous devriez également pouvoir définir cela dans votre application, comme suit :

import os
os.environ['KIVY_GL_BACKEND'] = 'sdl2'
import kivy

Je n'ai pas le temps d'approfondir la question pour le moment, mais j'espère que cela aidera quelqu'un.

Je peux confirmer que (une variante de) le "TL; DR / solution de contournement possible" du commentaire précédent fonctionne pour moi :

$ KIVY_GL_BACKEND=sdl2 python3 main.py

Mais _ceci_ échoue (Ubuntu 16.04.3 LTS dans un invité VirtualBox 5.1.6 r110634) :

$ python3 main.py
[INFO   ] [Logger      ] Record log in /home/evadeflow/.kivy/logs/kivy_17-10-03_7.txt
[INFO   ] [Kivy        ] v1.9.2-dev0
[INFO   ] [Python      ] v3.5.2 (default, Aug 18 2017, 17:48:00) 
[GCC 5.4.0 20160609]
[INFO   ] [Factory     ] 193 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [OSC         ] using <multiprocessing> for socket
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
egl_rpi - ImportError: cannot import name 'bcm'
  File "/usr/lib/python3/dist-packages/kivy/core/__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)
  File "/usr/lib/python3/dist-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
    from kivy.lib.vidcore_lite import bcm, egl

sdl2 - ImportError: /usr/lib/python3/dist-packages/kivy/graphics/cgl_backend/cgl_gl.cpython-35m-x86_64-linux-gnu.so: undefined symbol: glGetFramebufferAttachmentParameteriv
  File "/usr/lib/python3/dist-packages/kivy/core/__init__.py", line 67, in core_select_lib
    cls = cls()
  File "/usr/lib/python3/dist-packages/kivy/core/window/window_sdl2.py", line 139, in __init__
    super(WindowSDL, self).__init__()
  File "/usr/lib/python3/dist-packages/kivy/core/window/__init__.py", line 845, in __init__
    self.create_window()
  File "/usr/lib/python3/dist-packages/kivy/core/window/window_sdl2.py", line 263, in create_window
    self.fullscreen, resizable, state)
  File "kivy/core/window/_window_sdl2.pyx", line 110, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window (kivy/core/window/_window_sdl2.c:2172)
  File "kivy/graphics/cgl.pyx", line 50, in kivy.graphics.cgl.cgl_get_backend_name (kivy/graphics/cgl.c:2771)
  File "kivy/graphics/cgl.pyx", line 58, in kivy.graphics.cgl.cgl_get_backend_name (kivy/graphics/cgl.c:2623)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 577, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 906, in create_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "kivy/graphics/cgl_backend/cgl_glew.pyx", line 9, in init kivy.graphics.cgl_backend.cgl_glew (kivy/graphics/cgl_backend/cgl_glew.c:3044)

x11 - ImportError: No module named 'kivy.core.window.window_x11'
  File "/usr/lib/python3/dist-packages/kivy/core/__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)

[CRITICAL] [App         ] Unable to get a Window, abort.

Je peux également confirmer que décocher Activer l'accélération 3D dans les paramètres de cette machine virtuelle permet également à l'application de se charger avec succès.

Je rencontre également le même problème sur Ubuntu 16.04 .
tandis que l'application minimale (premier exemple de la doc officielle) fonctionne bien avec python2.7 alors qu'elle génère une erreur pour python3 . Voici un instantané de la commande 'python3 main.py'. Je suis un débutant à Kivy, alors quelqu'un peut-il m'aider !!
errore

@devanshhu Pouvez-vous mettre ce code dans votre main.py avant toute autre importation Kivy :

import os
os.environ['KIVY_GL_BACKEND'] = 'sdl2'

from kivy.core.window import Window

@ pythonic64 J'étais confronté au même problème. Votre solution a résolu le problème sur ma machine Windows, merci.

Il semble que ce symbole "glGetFramebufferAttachmentParameteriv" ​​ne soit pas dans OpenGL 2.0 car c'est le minimum que nous demandons réellement pour Desktop. Mais c'est dans OpenGL ES 2.0.

L'utilisation de GL_BACKEND sdl2 fonctionne car cette implémentation utilise une méthode dynamique pour récupérer le symbole GL, tandis que celle par défaut utilise une méthode statique.

Actions à faire :

  • préférer le symbole dynamique (sdl2) si la fenêtre sdl2 est réellement utilisée
  • correction de l'implémentation gl statique pour ne pas demander à glGetFramebufferAttachmentParameteriv s'il n'est pas disponible (déplacez-le vers cgl_glew et utilisez la liaison dynamique comme les autres symboles gl de bureau.)

(Réf : https://www.khronos.org/opengl/wiki/GLAPI/glGetFramebufferAttachmentParameter)

Je pense que cela a quelque chose à voir avec mon RPi, listé ci-dessous. Lorsque j'ai essayé la solution sdl2 "GL_BACKEND", j'ai eu une erreur de segmentation, probablement parce qu'elle avait déjà chargé sdl2. Comment puis-je empêcher le chargement du fournisseur d'images sdl2 ?

https://github.com/kivy/kivy/issues/5581

@frankgould Comme je l'ai écrit précédemment, je ne connais pas grand-chose à OpenGL. Cependant, pour moi, il ne semble pas que votre problème soit lié à ce problème.

La solution de contournement ci-dessus portait sur la façon de définir une variable d'environnement pour forcer un certain backend, et comment le faire depuis votre application.

Notez que dans le deuxième lien ( CGL : interface C standard pour OpenGL ) il est écrit (c'est moi qui souligne) :

sdl2 – Disponible sur Windows/unix

(donc ça pourrait aller puisque vous êtes sur Jessie) et

KIVY_GRAPHICS - Force OpenGL ES2 lorsqu'il est gles. OpenGL ES2 est toujours utilisé sur les systèmes d'exploitation android, ios, rpi et mali

Mais après un rapide coup d'œil à votre problème # 5581, dans votre journal, je ne vois rien à ce sujet (en utilisant SDL par rapport à la valeur par défaut). Donc, vous n'aurez peut-être pas le choix sur Raspberry Pi et je ne sais pas si vous devriez essayer de définir cette variable d'environnement. Je n'en possède pas, donc je ne peux pas le tester, désolé.

(Prendre une photo dans le noir ici : pour mieux trier le problème, essayez d'utiliser une version stable et la même version de Cython qu'ils recommandent, puis voyez si quelque chose change du tout. J'ai eu des problèmes avec des versions de Cython autres que celle recommandée. , et ce n'était pas sur un système d'exploitation plus exotique comme le RPi.)

Merci Dolang pour vos commentaires et suggestions. Aujourd'hui, j'ai essayé deux versions de Cython mais une seule version de kivy avec une version plus ancienne et toutes ont entraîné le même problème que celui collé ci-dessous.

Échec de l'initialisation FBO : pièce jointe incomplète (36054)

La raison pour laquelle je pense que celles-ci sont liées aux erreurs OpenGL Invalid Operation que je vois également est due au commentaire de tito sur glGetFramebufferAttachmentParameteriv ci-dessus et à la migration vers OpenGL2.0. Je crois comprendre que FBO est Frame Buffer Object et je suppose que les actions mentionnées par tito pourraient résoudre les symptômes que je ressens. Une personne a recommandé de ne pas utiliser sdl2 et c'est pourquoi j'ai trouvé ce post essayant d'apprendre à arrêter de l'utiliser.

Je pense vraiment que c'est un problème de développement de Kivy et j'aimerais trouver quelqu'un qui puisse m'aider avec ça. J'offre également un Raspberry Pi 3 GRATUIT à tous ceux qui peuvent m'aider à trouver une solution !

@franckould

La raison pour laquelle je pense que celles-ci sont liées aux erreurs OpenGL Invalid Operation que je vois également est due au commentaire de tito sur glGetFramebufferAttachmentParameteriv ci-dessus et à la migration vers OpenGL2.0

En fin de compte, votre supposition est aussi bonne que la mienne (ou mieux, vous pouvez en fait tester des choses sur un RPi ;) mais ce que j'ai compris du message de tito, c'est que le backend par défaut essaie d'accéder à une API OpenGL alors que SDL est un peu plus intelligent et (je supposons en plus) des sondes pour une API OpenGL ES . Ce ne sont pas tout à fait les mêmes.

Et je ne sais pas non plus pourquoi Virtualbox n'exécuterait que OpenGL ES, je ne l'ai pas examiné plus avant depuis lors. De plus, j'obtiens [INFO ] [GL ] OpenGL version <b'2.1 Chromium 1.9'> dans ma VM, ce qui indiquerait que ce n'est pas OpenGL ES, donc... :penser:

Quoi qu'il en soit, selon la documentation, RPi n'utilise que l'OpenGL ES, c'est pourquoi je suppose que cela ne vous aidera pas à manipuler ces paramètres, et ce bogue n'est pas lié (évidemment, cela ne fait pas de mal d'essayer).

Une personne a recommandé de ne pas utiliser sdl2 et c'est pourquoi j'ai trouvé ce post essayant d'apprendre à arrêter de l'utiliser.

Je pense que le premier journal que vous avez publié dans votre rapport indique que sdl2 n'est pas réellement utilisé ? Si vous ne spécifiez rien, la valeur par défaut sur *nix devrait être gl , comme dans KIVY_GL_BACKEND=gl . Sur ma machine virtuelle en "mode sdl2" (comme dans KIVY_GL_BACKEND=sdl2 ), j'obtiens un [INFO ] [GL ] Backend used <sdl2> dans mon journal, alors que vous avez [INFO ] [GL ] Backend used <gl> dans le journal qui y est attaché.

J'offre également un Raspberry Pi 3 GRATUIT à tous ceux qui peuvent m'aider à trouver une solution !

C'est une belle offre, mais j'ai peut-être une meilleure idée : comme il n'y a pas beaucoup de personnes qui ont les connaissances nécessaires et le matériel pour résoudre correctement ce problème, cela aiderait probablement beaucoup à créer à la place un ~KVM~ ou ~Virtualbox~ image avec votre configuration (ou fournissez des instructions pour cela).

Si vous pouvez reproduire le problème dans une VM*, les personnes qui n'ont pas de RPi pourront vous aider beaucoup plus facilement.

Mais nous devrions probablement déplacer cela vers votre propre problème, alors.

Edit : si vous essayez de mettre cela ensemble sur une machine virtuelle, KVM/Virtualbox ne le fera pas car RPi est ARM. Vous devriez trouver des instructions pour QEMU. De manière confuse, parfois KVM et QEMU sont mentionnés ensemble, car ils fonctionnent ensemble. Quoi qu'il en soit, ce dont nous aurions besoin, c'est d'exécuter ARM sur x86 (la partie EMU dans QEMU signifie émulateur), et "juste utiliser une machine virtuelle" ne suffira pas. J'examine un peu ça.


* Aucune garantie, cependant - les choses sont délicates comme vous pouvez le voir, et dans ce rapport de bogue spécifique ici, la cause est d'essayer Kivy sur une machine virtuelle au lieu d'une vraie machine.

Sous Windows, glew et sdl2 sont requis en tant que dépendances. J'ai eu le même problème. Installation de toutes les dépendances

python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew

pip installer pygame
a résolu le problème pour moi

Ubuntu Linux 17.10 64 bits
Python 3.6.3

gel des pépins
buildozer==0.35.dev0
certificat==2018.4.16
charet==3.0.4
Cython==0.28.2
docutils==0.14
idna==2.6
Kivy==1.10.0
Kivy-Jardin==0.1.4
attendre==4.5.0
lecteur==1.3.1.dev0
ptyprocess==0.5.2
pygame==1.9.3
Pygments==2.2.0
demandes==2.18.4
URLlib3==1.22
virtualenv==15.2.0

MAIS: je n'ai pas eu buildozer ou p4a pour créer un apk Android avec python3.
Donc, après avoir perdu une demi-journée, je reviens maintenant python2.7
Terveisin, Markus

quelqu'un a trouvé une solution à cela? Je l'ai toujours dans Ubuntu 18.04 gnome3

La solution n'a pas changé, c'est un problème avec Virtualbox. Vous pouvez le réparer comme ceci :

export KIVY_GL_BACKEND=sdl2

ou dans votre code au tout début:

import os
os.environ['KIVY_GL_BACKEND'] = 'sdl2'

ou désactivez l'accélération 3D de votre image Virtualbox.

en fait je ne suis pas sur une VM ? c'est une installation normale, j'ai utilisé kivy sur ubuntu 16.04 unity sans problème, mais après avoir mis à jour vers 18.04, il a commencé à le faire.

Je l'ai corrigé en mettant à jour kivy

+1 pour désactiver l'accélération 3D dans les préférences de la machine VirtualBox. J'étais très frustré d'essayer de faire fonctionner une application Kivy sur l'une de mes (plusieurs) machines virtuelles Ubuntu 16 alors que cela avait bien fonctionné sur les autres. Je me sentais comme Sam Jackson dans Jurassic Park essayant de faire des choses qui devraient fonctionner encore et encore. "(Accéder au programme principal... accéder à la sécurité principale... accéder à la grille du programme principal...") Frustré, j'ai simplement décidé de copier sur l'une des machines virtuelles que je savais fonctionner à partir d'une machine (hôte) différente.

Et cela n'a pas fonctionné sur la nouvelle machine hôte, bien qu'il s'agisse d'un invité identique. Le problème était donc clairement lié à l'hôte et/ou à la configuration de VirtualBox elle-même. Désactiver l'accélération 3D a fait l'affaire.

c'est toujours un problème sur VirtualBox avec Ubuntu 18.04.3 avec Kivyv 1.11.1. Je ne peux pas inclure une dépendance dans un autre projet open source qui a des problèmes.

kivy devrait fonctionner hors de la boîte sur les exemples de base. quand cela sera-t-il corrigé ???

J'ai mis à jour vers la v1.11.1 via le ppa mais j'obtiens toujours la même erreur.

@comperem a-t-il fonctionné pour vous si vous avez ajouté sdl2 comme backend gl comme dans l'exemple ci-dessus ? Sinon c'est un problème sans rapport.

Merci @paapu88 !
L'installation de pygame à utiliser à la place de sdl2 par défaut a fonctionné pour moi sur Python 3.7.3, Kivy 1.11.1, Debian 10 sur VM avec l'accélération 3D activée.

pip3 installer pygame

Cependant, je reçois des drapeaux d'avertissement obsolètes : _Pygame est obsolète et sera supprimé après 1.11.0 : appel à la fonction obsolète __init__ dans /home/kkuser/.local/lib/python3.7/site-packages/kivy/core/window /window_pygame.py ligne 42.Appelé depuis /home/kkuser/.local/lib/python3.7/site-packages/kivy/core/__init__.py ligne 71 par core_select_lib()._

Cette page vous a été utile?
0 / 5 - 0 notes