Kivy: Kivy sdl2 DLL Загрузка не удалась

Созданный на 26 мар. 2018  ·  29Комментарии  ·  Источник: kivy/kivy

  • Питон: 3.6.4
  • ОС: Виндовс 10
  • Киви: 1.10.0
  • Метод установки Киви:
    python -m pip install --upgrade инструменты настройки колеса pip
    python -m pip установить docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
    python -m pip установить kivy.deps.gstreamer
    python -m pip установить kivy.deps.angle
    python -m pip установить kivy
    python -m pip установить kivy_examples
    python -m pip установить подушку
    python -m pip установить cython
    python -m pip установить PyEnchant

Описание

Привет, я пытаюсь запустить пример кода из установки Kivy. Ниже приведена ошибка, которую я получаю обратно. Любая помощь будет здорово. Я пытался просмотреть предыдущие запросы о подобных проблемах, но ничего из предложенного по ним пока не сработало.

[INFO   ] [Logger      ] Record log in C:\Users\DoddJ\.kivy\logs\kivy_18-03-26_52.txt
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pil, img_gif (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: The specified module could not be found.
  File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\core\__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)
  File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 26, in <module>
    from kivy.core.window._window_sdl2 import _WindowSDL2Storage

[CRITICAL] [App         ] Unable to get a Window, abort.
 Exception ignored in: 'kivy.properties.dpi2px'
 Traceback (most recent call last):
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\utils.py", line 496, in __get__
     retval = self.func(inst)
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\metrics.py", line 174, in dpi
     EventLoop.ensure_window()
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\base.py", line 127, in ensure_window
     sys.exit(1)
 SystemExit: 1
[CRITICAL] [App         ] Unable to get a Window, abort.

Код и журналы

Код, который я пытаюсь запустить:

import kivy
kivy.require('1.10.0') # replace with your current kivy version !

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()
documentation Windows

Самый полезный комментарий

Что ж,

некоторые дальнейшие испытания показывают, что он работает правильно, если ОБА kivy.deps.glew И kivy.deps.sdl2 установлены в режиме администратора.

Я думаю, что проблема заключается в том, что слишком много жестко закодировано в site-packages\kivy\deps\*\__init__.py

Интересно, есть ли более канонический способ добавления DLL из пакетов Pip в PATH ...?

Все 29 Комментарий

что это говорит в вашей системе (PowerShell):

python -m pip freeze | select-string cython

@dolang это говорит
'select-string' не распознается как внутренняя или внешняя команда,
работающая программа или командный файл.

да, извините, что не ясно. Вам нужно выполнить это в PowerShell. Это замена приглашению DOS.

Используйте Win + x , затем выберите его или введите powershell в командной строке. У вас будет PS в качестве первых двух букв подсказки.

Ох, ладно. В powershell написано

Cython==0.27.3

Хорошо, безуспешно пытался воспроизвести его с похожей, но не такой же средой. По сути, ошибка говорит о том, что библиотека sdl2 отсутствует. Но он должен был быть установлен с python -m pip install kivy.deps.sdl2 , который где-то находится в вашем первоначальном описании.

Мне придется снова попытаться воспроизвести это на другой машине, вы можете попробовать pip uninstall ... + pip install ... эту зависимость тем временем.

Попробовал сейчас на другой машине, получил тот же результат (т.е. здесь работает). Что у вас есть для:

PS  C:\> python -m pip freeze | select-string sdl2

это должно дать вам: kivy.deps.sdl2==0.1.17 .

В качестве альтернативы, если у вас установлено несколько интерпретаторов Python:

PS  C:\> py -3.6 -m pip freeze | select-string sdl2

Если одна из этих двух команд не дает вам выходных данных, указанных выше, попробуйте переустановить kivy.deps.sdl2 .

Если они это сделают, но это не сработает, вставьте то, что у вас есть:

PS C:\> dir C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\share\sdl2\bin

Возможно, вам придется переустановить 64-битный интерпретатор Python. (Просто предположение, пока не уверен.)

Я сделал это и

получить kivy.deps.sdl2==0.1.17

Я удалил 32-битный и установил 64-битный Python на его место, однако все еще получаю эту ошибку

H:\untitled2\Scripts\python.exe "C:/Users/DoddJ/PycharmProjects/untitled/KIVY TEST.py"
[INFO   ] [Logger      ] Record log in C:\Users\DoddJ\.kivy\logs\kivy_18-03-28_40.txt
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pil, img_gif (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.

[CRITICAL] [App         ] Unable to get a Window, abort.
 Exception ignored in: 'kivy.properties.dpi2px'
 Traceback (most recent call last):
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\utils.py", line 496, in __get__
     retval = self.func(inst)
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\metrics.py", line 174, in dpi
     EventLoop.ensure_window()
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\base.py", line 127, in ensure_window
     sys.exit(1)
 SystemExit: 1
[CRITICAL] [App         ] Unable to get a Window, abort.

Process finished with exit code 1

Ну, я не был уверен, что здесь может быть проблема с 32/64-битной версией. Но можете ли вы посмотреть, действительно ли .dll там?

PS C:\> dir C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\share\sdl2\bin

Если он есть, возможно, его блокирует ваш антивирусный сканер или ваш брандмауэр (или какое-то другое действительно навязчивое программное обеспечение)? Это не то, что должно происходить, имхо.

Редактировать: снова посмотрел на мою установку и открыл запущенное приложение в Process Hacker. Эта SDL2.dll специально создана для PyPI и выглядит так, как будто она не подписана. Из-за этого в зависимости от настроек вашей политики Windows он может быть заблокирован автоматически. Может быть, поможет следующее?

Windows 10: разблокировать файл в Windows 10

Согласно более раннему комментарию, у вас есть cython 0.27.3, а в журнале консоли указано Kivy v1.10.0... эти версии несовместимы, хотя я точно не уверен, почему отсутствующий оконный провайдер является первым ключом к этой проблеме. .. Может быть, попробовать либо использовать cython 0.25.2 (совместимый с 1.10) + переустановить kivy, либо, альтернативно, pip install kivy==master с вашей текущей версией cython?

Я получаю эту проблему также с Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32

````
C:> python3 -m pip show kivy kivy.deps.glew kivy.deps.sdl2
Имя: Киви
Версия: 1.10.0
Описание: Программная библиотека для быстрой разработки мультитач-приложений с аппаратным ускорением.
Домашняя страница: http://kivy.org
Автор: Kivy Team и другие участники
Электронная почта автора: [email protected]
Лицензия: Массачусетский технологический институт
Расположение: c:\users\jedingtoappdata\roaming\python\python36\site-packages.
Требуется: docutils, Kivy-Garden, pygments

Требуется:

Имя: kivy.deps.glew
Версия: 0.1.9
Резюме: переупакована бинарная зависимость Kivy.
Домашняя страница: http://kivy.org/
Автор: Киви Крю
Электронная почта автора: [email protected]
Лицензия: Массачусетский технологический институт
Расположение: c:\users\jedingtoappdata\roaming\python\python36\site-packages.
Требует:

Требуется:

Имя: kivy.deps.sdl2
Версия: 0.1.17
Резюме: переупакована бинарная зависимость Kivy.
Домашняя страница: http://kivy.org/
Автор: Киви Крю
Электронная почта автора: [email protected]
Лицензия: zlib
Расположение: c:\users\jedingtoappdata\roaming\python\python36\site-packages.
Требует:
Требуется:
````

запуск дает следующее:

````
Python 3.6.5 (v3.6.5:f59c0932b4, 28 марта 2018 г., 17:00:18) [MSC v.1900 64 бит (AMD64)] на win32
Введите «помощь», «авторское право», «кредиты» или «лицензия» для получения дополнительной информации.

из kivy.app импортировать приложение
[INFO] [Logger] Запись журнала в C:\Users\jedingto.kivy\logs\kivy_18-05-17_4.txt
[ИНФОРМАЦИЯ] [Киви] v1.10.0
[INFO] [Python] v3.6.5 (v3.6.5:f59c0932b4, 28 марта 2018 г., 17:00:18) [MSC v.1900 64 бит (AMD64)]
[INFO] [Factory] 194 загруженных символа
[INFO] [Image] Поставщики: img_tex, img_dds, img_gif (img_sdl2, img_pil, img_ffpyplayer игнорируются)
из kivy.uix.widget импортировать виджет
класс PongGame (виджет):
... проходят
...
класс PongApp (приложение):
... сборка по умолчанию (самостоятельно):
... вернуть PongGame()
...
PongApp().run()
[КРИТИЧЕСКОЕ] [Окно] Не удалось найти какого-либо ценного поставщика окон.
sdl2 — ImportError: Ошибка загрузки DLL: указанный модуль не найден.
Файл "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core__init__.py", строка 59, в core_select_lib
fromlist=[имя модуля], уровень=0)
Файл "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py", строка 26, в
из kivy.core.window._window_sdl2 импортировать _WindowSDL2Storage

[КРИТИЧЕСКОЕ] [Приложение] Не удалось получить окно, прервать.
````

Несмотря на существование DLL SDL2:

````
каталог %AppData%\Python\sharesdl2\bin\SDL2.dll
Том на диске C XXXXXX
Серийный номер тома: 0000-0000

Каталог C:\Users\USERAppData\Roaming\Python\sharesdl2\bin

17.05.2018, 11:33 1 254 400 SDL2.dll
1 файл(ы) 1 254 400 байт
0 Dir(s) 161 199 689 728 байт свободно
````

и я должен добавить, что это происходит, даже если я удаляю kivy.deps.sdl из режима --user и устанавливаю его в C:\Program Files\Python\share\sdl2 через режим администратора, ошибка та же:

````

PongApp().run()
[КРИТИЧЕСКОЕ] [Окно] Не удалось найти какого-либо ценного поставщика окон.
sdl2 — ImportError: Ошибка загрузки DLL: указанный модуль не найден.
Файл "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core__init__.py", строка 59, в core_select_lib
fromlist=[имя модуля], уровень=0)
Файл "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py", строка 26, в
из kivy.core.window._window_sdl2 импортировать _WindowSDL2Storage

[КРИТИЧЕСКОЕ] [Приложение] Не удалось получить окно, прервать.

````

Это даже не сработает, если я cd прямо в каталог рядом с SDL2.dll перед запуском python3

Хорошо, здесь есть несколько вещей:

  1. .dll должен существовать в этом каталоге
  2. файл ...\site-packages\kivy\deps\sdl2\__init__.py загружается и указывает на .dll
  3. Windows (или какое-либо другое навязчивое программное обеспечение, такое как некоторые антивирусные сканеры) сама по себе не блокирует его загрузку.

Пока мне не удалось воспроизвести его, но 3. нельзя исключать.

Еще одна вещь, которую вы можете попробовать: откройте командную строку и укажите PATH непосредственно в папке sdl2. Что-то типа:

\> set PATH=C:\Users\USER\AppData\Roaming\Python\share\sdl2\bin;%PATH%

@dolang Что ж, похоже, добавление папки %PATH% SDL2.dll исправления %PATH%… частично исправляет эту ошибку. img_sdl2 теперь больше не "игнорируется", но по-прежнему "Не удается найти какого-либо ценного провайдера Windows". Это также дало немного другое (почти исключительно расширенное?) сообщение об ошибке.

[INFO ] [Logger ] Record log in C:\Users\jedingto\.kivy\logs\kivy_18-05-17_15.txt [INFO ] [Kivy ] v1.10.0 [INFO ] [Python ] v3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] [INFO ] [Factory ] 194 symbols loaded [INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored) [INFO ] [OSC ] using <thread> for socket [INFO ] [Window ] Provider: sdl2 [CRITICAL] [Window ] Unable to find any valuable Window provider. sdl2 - ImportError: DLL load failed: The specified module could not be found. File "C:\Users\jedingto\AppData\Roaming\Python\Python36\site-packages\kivy\core\__init__.py", line 67, in core_select_lib cls = cls() File "C:\Users\jedingto\AppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py", line 140, in __init__ super(WindowSDL, self).__init__() File "C:\Users\jedingto\AppData\Roaming\Python\Python36\site-packages\kivy\core\window\__init__.py", line 899, in __init__ self.create_window() File "C:\Users\jedingto\AppData\Roaming\Python\Python36\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 (kivy\core/window\_window_sdl2.c:2466) File "kivy\graphics\cgl.pyx", line 52, in kivy.graphics.cgl.cgl_get_backend_name (kivy\graphics\cgl.c:3044) File "kivy\graphics\cgl.pyx", line 60, in kivy.graphics.cgl.cgl_get_backend_name (kivy\graphics\cgl.c:2879) File "C:\Program Files\Python36\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 658, in _load_unlocked File "<frozen importlib._bootstrap>", line 571, in module_from_spec File "<frozen importlib._bootstrap_external>", line 922, in create_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

Я подтвердил, неоднократно добавляя и удаляя это из PATH, что наличие img_sdl2 в разделе «игнорируется» зависит от этого, и что расширенный текст ошибки появляется или исчезает в зависимости от того, может ли он найти SDL2 или нет.

Теперь рядом с зависимостью glew должна быть папка ( share\glew\bin ). Что произойдет, если вы добавите и это?

Ага!

Итак, в Windows это можно «решить», добавив %AppData%\Python\share\glew\bin;%AppData%\Python\share\sdl2\bin; перед PATH :

cmd /C "PATH=%AppData%\Python\share\glew\bin;%AppData%\Python\share\sdl2\bin;%PATH% && python3 -c ^"from kivy.core.window._window_sdl2 import _WindowSDL2Storage^""

Но, к сожалению, это не решение само по себе

Как библиотеки pip-installed-python должны попасть в PATH , в котором они должны находиться, чтобы функционировать? (перезагрузки было недостаточно)

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

Как сказано выше (пункт 2.), вы можете увидеть, что если вы откроете __init__.py в site-packages\kivy\deps\... , но это должно работать из коробки. Теперь мне нужно найти способ сломать мой точно так же, как в вашем случае. :улыбка:

Есть ли в этом польза?

````

импорт PDB
pdb.run()
КлавиатураПрерывание
ягненок
КлавиатураПрерывание
pdb.run("из kivy.core.window._window_sdl2 импортировать _WindowSDL2Storage")
(1)()
(Pdb) с
--Вызов--
(966)_find_and_load()
(Пдб)
(968)_find_and_load()
(Пдб)
--Вызов--
(143)__инициализация__()
(Пдб)
(144)__инициализация__()
(Пдб)
(145)__инициализация__()
(Пдб)
--Возвращение--
(145)__init__()->Нет
(Пдб)
--Вызов--
(147)__введите__()
(Пдб)
(148)__введите__()
(Пдб)
--Вызов--
(157)_get_module_lock()
(Пдб)
(163)_get_module_lock()
(Пдб)
(164)_get_module_lock()
(Пдб)
(165)_get_module_lock()
(Пдб)
(166)_get_module_lock()
(Пдб)
KeyError: 'kivy.core.window._window_sdl2'
(166)_get_module_lock()
(Пдб)
(167)_get_module_lock()
(Пдб)
(168)_get_module_lock()
(Пдб)
(170)_get_module_lock()
(Пдб)
(171)_get_module_lock()
(Пдб)
(174)_get_module_lock()
(Пдб)
--Вызов--
(58)__инициализация__()
(Пдб)
(59)__инициализация__()
(Пдб)
(60)__инициализация__()
(Пдб)
(61)__инициализация__()
(Пдб)
(62)__инициализация__()
(Пдб)
(63)__инициализация__()
(Пдб)
(64)__инициализация__()
(Пдб)
--Возвращение--
(64)__init__()->Нет
(Пдб)
(176)_get_module_lock()
(Пдб)
(187)_get_module_lock()
(Пдб)
(189)_get_module_lock()
(Пдб)
(191)_get_module_lock()
(Пдб)
--Возвращение--
(191)_get_module_lock()->_ModuleLock('... 1869402554208
(Пдб)
(149)__введите__()
(Пдб)
--Вызов--
(78)приобретать()
(Пдб)
(84)приобретать()
(Пдб)
(85)приобретать()
(Пдб)
(86)приобретать()
(Пдб)
(87)приобретать()
(Пдб)
(88)приобретать()
(Пдб)
(89)приобретать()
(Пдб)
(90) приобретать ()
(Пдб)
(91) приобретать ()
(Пдб)
(92) приобретать ()
(Пдб)
(101) приобретать ()
(Пдб)
Ошибка ключа: 12616
(101) приобретать ()
(Пдб)
--Возвращение--
(101) приобретать () -> нет
(Пдб)
Ошибка ключа: 12616
(149)__введите__()
(Пдб)
--Возвращение--
(149)__enter__()->Нет
(Пдб)
Ошибка ключа: 12616
(968)_find_and_load()
(Пдб)
--Возвращение--
(968)_find_and_load()->Нет
(Пдб)
Ошибка ключа: 12616
(1)()
(Пдб)
--Возвращение--
(1)()->Нет
(Пдб)
Ошибка ключа: 12616
c:\program filespython36\lib\bdb.py(434)run()
-> exec(cmd, глобальные, локальные)
(Пдб)
c:\program filespython36\lib\bdb.py(435)run()
-> кроме BdbQuit:
(Пдб)
c:\program filespython36\lib\bdb.py(438)run()
-> самовыход = Истина
(Пдб)
Traceback (последний последний вызов):
Файл "", строка 1, в
Файл "C:\Program Files\Python36\lib\pdb.py", строка 1572, выполняется
Pdb().run(инструкция, глобальные переменные, локальные переменные)
Файл "C:\Program Files\Python36\lib\bdb.py", строка 434, выполняется
exec(cmd, глобальные, локальные)
Файл "", строка 1, в
Файл "", строка 968, в _find_and_load
Файл "", строка 149, в __enter__
Файл "", строка 101, в приобретении
Ошибка ключа: 12616
````

Что ж,

некоторые дальнейшие испытания показывают, что он работает правильно, если ОБА kivy.deps.glew И kivy.deps.sdl2 установлены в режиме администратора.

Я думаю, что проблема заключается в том, что слишком много жестко закодировано в site-packages\kivy\deps\*\__init__.py

Интересно, есть ли более канонический способ добавления DLL из пакетов Pip в PATH ...?

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

Кстати, вы знакомы с virtualenv . Я обычно использую их и редко имею проблемы. Итак, на данный момент вы можете сделать (admin):

py -m pip install virtualenv

Обычная учетная запись пользователя ( .venv — мое предпочтительное имя каталога virtualenv, меняйте по своему усмотрению):

py -m virtualenv .venv
.venv\Scripts\activate
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy

опционально добавить: python -m pip install kivy.deps.gstreamer

Надеюсь, я все понял.

Конфигурация Windows 10 Python 363 (Visual Studio 2017):

[INFO   ] [Logger      ] Record log in C:\Users\Laurent\.kivy\logs\kivy_18-08-23_29.txt
[INFO   ] [Kivy        ] v1.10.1
[INFO   ] [Python      ] v3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.6.0 NVIDIA 390.77'>
[INFO   ] [GL          ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO   ] [GL          ] OpenGL renderer <b'GeForce GTX 970/PCIe/SSE2'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 6
[INFO   ] [GL          ] Shading version <b'4.60 NVIDIA'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Text        ] Provider: sdl2
Standard library module invoked user code during import; breakpoints disabled for invoked code.
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available
[WARNING] [Accordion   ] not enough space for displaying all children
[WARNING] [Accordion   ] need 132px, got 84px
[WARNING] [Accordion   ] layout aborted.
[WARNING] [Accordion   ] not enough space for displaying all children
[WARNING] [Accordion   ] need 132px, got 84px
[WARNING] [Accordion   ] layout aborted.
[INFO   ] [Base        ] Leaving application in progress...
The thread 'MainThread' (0x13ec) has exited with code 0 (0x0).

У меня такая же проблема, и я решаю ее, и мое решение не является хорошим. Я копирую все dll (share/sdl2 share/angle share/glew share/gstreamer) в репозиторий и добавляю этот репозиторий в переменную пути.

Я установил kivy с правами администратора (https://kivy.org/docs/installation/installation-windows.html) и попытался запустить с правами пользователя (user laurent), затем произошла ошибка: [CRITICAL] [Window] Unable to find любой ценный поставщик окон.
sdl2 — ImportError: Ошибка загрузки DLL: указанный модуль не найден.

Копирование всех dll в новую папку решает проблемы. Тогда мой вопрос: как я могу установить kivy для запуска kivy с правами пользователя?

PS извините, я не силен в английском и питоне

Кстати, вы знакомы с virtualenv . Я обычно использую их и редко имею проблемы. Итак, на данный момент вы можете сделать (admin):

py -m pip install virtualenv

Обычная учетная запись пользователя ( .venv — мое предпочтительное имя каталога virtualenv, меняйте по своему усмотрению):

py -m virtualenv .venv
.venv\Scripts\activate
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy

Я пробовал использовать virtualenv, и это не сработало. У меня все еще есть похожая ошибка. Я также уже добавил C:\Program Files\Python37\share\sdl2\bin и C:\Program Files\Python37\share\angle\bin в свой PATH. И я сделал то, что, как я думаю, сделал @LaurentBerger , скопировал эти два файла в другой каталог, а затем добавил этот каталог в путь. Использование virtualenv с двумя параметрами PATH у меня тоже не сработало.

Я использую Python 3.7, поэтому я установил kivy.deps.angle вместо kivy.deps.glew

Журналы:
```(venv) C:\Users\henry\Documents\Side Projects\fps>py main.py
[INFO] [Logger] Запись журнала в C:\Users\henry.kivy\logs\kivy_18-09-15_16.txt
[ИНФОРМАЦИЯ] [Киви] v1.10.1
[INFO] [Python] v3.7.0 (v3.7.0:1bf9cc5093, 27 июня 2018 г., 04:59:51) [MSC v.1914 64 бит (AMD64)]
[INFO] [Factory] 194 загруженных символа
[INFO] [Image] Поставщики: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer игнорируются)
[ИНФО] [Текст] Поставщик: sdl2
[ИНФОРМАЦИЯ] [Окно] Поставщик: sdl2
[КРИТИЧЕСКОЕ] [Окно] Не удалось найти какого-либо ценного поставщика окон.
sdl2 — ImportError: Ошибка загрузки DLL: указанный модуль не найден.
Файл "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core__init__.py", строка 67, в core_select_lib
клс = клс()
Файл "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py", строка 140, в __init__
супер(WindowSDL, сам).__init__()
Файл "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window__init__.py", строка 968, в __init__
self.create_window()
Файл "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py", строка 272, в create_window
self.fullscreen, изменяемый размер, состояние)
Файл "kivy\core\window_window_sdl2.pyx", строка 125, в kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
Файл "kivy\graphics\cgl.pyx", строка 52, в kivy.graphics.cgl.cgl_get_backend_name
Файл "kivy\graphics\cgl.pyx", строка 60, в kivy.graphics.cgl.cgl_get_backend_name
Файл "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\importlib__init__.py", строка 127, в import_module
вернуть _bootstrap._gcd_import (имя [уровень:], пакет, уровень)
Файл "", строка 1006, в _gcd_import
Файл "", строка 983, в _find_and_load
Файл "", строка 967, в _find_and_load_unlocked
Файл "", строка 670, в _load_unlocked
Файл "", строка 583, в module_from_spec
Файл "", строка 1043, в create_module
Файл "", строка 219, в _call_with_frames_removed

[КРИТИЧЕСКОЕ] [Приложение] Не удалось получить окно, прервать.
```

В этом вопросе я видел смешивание архитектур библиотек (Python в 64 битах, SDL2 в 32 битах), так что это первая остановка. И да, если перепутать арк, то библиотеки вообще не будут использоваться и Kivy работать не будет.
Установка SDL2 через kivy.deps.sdl2 должна работать.

Я использую Python 3.7, и я получаю эту ошибку. киви версия 1.10.1
как мне это решить

здесь то же самое, python 3.7, версия kivy — 1.10.1, и я пытался всеми способами загрузить DLL, но не проявлял милосердия.

https://stackoverflow.com/questions/49466785/kivy-error-python-2-7-sdl2-import-error/49477111#49477111

Это Решите мою проблему, которая такая же, как у вас
Надеюсь, что это поможет вам

Я была такая же проблема. Это видео может помочь тем, кто видит! https://youtu.be/gt-qndBYrCQ

Было много проблем, но удалось их решить. Вот что я узнал (используя PyCharm):
1) Вы не можете установить Kivy на Python 3.8. Если у вас 3.8, вернитесь к 3.7.
2) Я установил все пакеты, которые кто-то другой выложил. Я размещу свой здесь. Перейдите к интерпретатору вашего проекта и нажмите кнопку «+», чтобы добавить их все. Они должны успешно установиться.
pkg1
pkg2
3) Получал ошибку окна sdl2. Посмотрел это короткое видео (https://www.youtube.com/watch?v=e_jv8KsYBrs&t=212s) (да благословит Бог этого человека) и изменил свои пути в моей системной среде.
4) Затем я переустановил зависимости с сайта Kivy - И ЭТО РАБОТАЛО!!!

Надеюсь, это кому-нибудь поможет!!!!

Кстати, вы знакомы с virtualenv . Я обычно использую их и редко имею проблемы. Итак, на данный момент вы можете сделать (admin):

py -m pip install virtualenv

Обычная учетная запись пользователя ( .venv — мое предпочтительное имя каталога virtualenv, меняйте по своему усмотрению):

py -m virtualenv .venv
.venv\Scripts\activate
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy

Я пробовал использовать virtualenv, и это не сработало. У меня все еще есть похожая ошибка. Я также уже добавил C:\Program Files\Python37\share\sdl2\bin и C:\Program Files\Python37\share\angle\bin в свой PATH. И я сделал то, что, как я думаю, сделал @LaurentBerger , скопировал эти два файла в другой каталог, а затем добавил этот каталог в путь. Использование virtualenv с двумя параметрами PATH у меня тоже не сработало.

Я использую Python 3.7, поэтому я установил kivy.deps.angle вместо kivy.deps.glew

Журналы:

[INFO   ] [Logger      ] Record log in C:\Users\henry\.kivy\logs\kivy_18-09-15_16.txt
[INFO   ] [Kivy        ] v1.10.1
[INFO   ] [Python      ] v3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: The specified module could not be found.
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
    cls = cls()
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py", line 140, in __init__
    super(WindowSDL, self).__init__()
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\__init__.py", line 968, in __init__
    self.create_window()
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py", line 272, in create_window
    self.fullscreen, resizable, state)
  File "kivy\core\window\_window_sdl2.pyx", line 125, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
  File "kivy\graphics\cgl.pyx", line 52, in kivy.graphics.cgl.cgl_get_backend_name
  File "kivy\graphics\cgl.pyx", line 60, in kivy.graphics.cgl.cgl_get_backend_name
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 583, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1043, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

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

Попробуйте вручную скопировать папки glew,sdl2 и __init__.py из ../site-packages/kivy_deps в ../site-packages/kivy/deps.
Это сработало для меня

Была ли эта страница полезной?
0 / 5 - 0 рейтинги