Kivy: Kivy sdl2 DLL 加载失败

创建于 2018-03-26  ·  29评论  ·  资料来源: kivy/kivy

  • 蟒蛇:3.6.4
  • 操作系统:Windows 10
  • 基维:1.10.0
  • Kivy安装方法:
    python -m pip install --upgrade pip wheel setuptools
    python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
    python -m pip install kivy.deps.gstreamer
    python -m pip install kivy.deps.angle
    python -m pip install kivy
    python -m pip install kivy_examples
    python -m pip 安装枕头
    python -m pip 安装 cython
    python -m pip install 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.glewkivy.deps.sdl2都以管理员模式安装,则它可以正常工作。

我认为问题在于太多被硬编码到site-packages\kivy\deps\*\__init__.py

我想知道是否有更规范的方法将 Pip 包中的 DLL 添加到PATH ...?

所有29条评论

这在您的系统(PowerShell)上说明了什么:

python -m pip freeze | select-string cython

@dolang它说
'select-string' 未被识别为内部或外部命令,
可运行的程序或批处理文件。

是的,对不起,不清楚。 您需要在 PowerShell 中执行该操作。 它是 DOS 提示符的替代品。

使用Win + x然后选择它,或在命令提示符下键入powershell 。 您将有PS作为提示的前 2 个字母。

哦好的。 在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,或者使用当前的 cython 版本使用pip install kivy==master

我也遇到了这个问题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, Mar 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
[信息] [Python] v3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 位 (AMD64)]
[INFO] [Factory] ​​194 个符号已加载
[信息] [图像] 提供者:img_tex、img_dds、img_gif(img_sdl2、img_pil、img_ffpyplayer 被忽略)
从 kivy.uix.widget 导入小部件
类 PongGame(小部件):
... 经过
...
类 PongApp(应用程序):
...定义构建(自我):
...返回 PongGame()
...
PongApp().run()
[CRITICAL] [Window] 找不到任何有价值的 Window 提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
文件“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

[CRITICAL] [App] 无法获取窗口,中止。
````

尽管存在 SDL2 DLL:

````
目录 %AppData%\Python\sharesdl2\bin\SDL2.dll
驱动器 C 中的卷为 XXXXXX
卷序列号为 0000-0000

C:\Users\USERAppData\Roaming\Python\sharesdl2\bin 目录

2018-05-17 11:33 AM 1,254,400 SDL2.dll
1 个文件 1,254,400 字节
0 Dir(s) 161,199,689,728 字节空闲
````

我应该补充一点,即使我从--user模式卸载kivy.deps.sdl并通过管理员模式将其安装到C:\Program Files\Python\share\sdl2中,也会发生这种错误,错误是相同的:

````

PongApp().run()
[CRITICAL] [Window] 找不到任何有价值的 Window 提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
文件“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

[CRITICAL] [App] 无法获取窗口,中止。

````

如果我cd $ 在运行python3 SDL2.dll旁边的目录,它甚至都不起作用

好吧,这里有几件事在起作用:

  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好吧,似乎将SDL2.dll文件夹添加到%PATH%修复了....该错误的一部分。 img_sdl2现在不再“忽略”,但仍然是“无法找到任何有价值的窗口提供程序”。 它还给出了一些略有不同(几乎完全扩展?)的错误消息

[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-libraries 应该如何进入它们必须进入的PATH才能运行? (重启是不够的)

这只是让我了解图书馆是否真的被封锁的线索。 好在他们不是。

如上所述(第 2 点),您可以看到,如果您在site-packages\kivy\deps\...中打开__init__.py $ ,但这应该是开箱即用的。 现在我需要找到一种方法来打破我的情况,就像你的情况一样。 :微笑:

这有什么用吗?

````

导入 pdb
pdb.run()
键盘中断
羊肉
键盘中断
pdb.run("从 kivy.core.window._window_sdl2 导入 _WindowSDL2Storage")
(1)()
(pdb) 秒
- 称呼 -
(966)_find_and_load()
(pdb)
(968)_find_and_load()
(pdb)
- 称呼 -
(143)__init__()
(pdb)
(144)__init__()
(pdb)
(145)__init__()
(pdb)
- 返回 -
(145)__init__()->无
(pdb)
- 称呼 -
(147)__进入__()
(pdb)
(148)__进入__()
(pdb)
- 称呼 -
(157)_get_module_lock()
(pdb)
(163)_get_module_lock()
(pdb)
(164)_get_module_lock()
(pdb)
(165)_get_module_lock()
(pdb)
(166)_get_module_lock()
(pdb)
KeyError:'kivy.core.window._window_sdl2'
(166)_get_module_lock()
(pdb)
(167)_get_module_lock()
(pdb)
(168)_get_module_lock()
(pdb)
(170)_get_module_lock()
(pdb)
(171)_get_module_lock()
(pdb)
(174)_get_module_lock()
(pdb)
- 称呼 -
(58)__init__()
(pdb)
(59)__init__()
(pdb)
(60)__init__()
(pdb)
(61)__init__()
(pdb)
(62)__init__()
(pdb)
(63)__init__()
(pdb)
(64)__init__()
(pdb)
- 返回 -
(64)__init__()->无
(pdb)
(176)_get_module_lock()
(pdb)
(187)_get_module_lock()
(pdb)
(189)_get_module_lock()
(pdb)
(191)_get_module_lock()
(pdb)
- 返回 -
(191)_get_module_lock()->_ModuleLock('... 1869402554208
(pdb)
(149)__进入__()
(pdb)
- 称呼 -
(78)获取()
(pdb)
(84)获取()
(pdb)
(85)获取()
(pdb)
(86)获取()
(pdb)
(87)获取()
(pdb)
(88)获取()
(pdb)
(89)获取()
(pdb)
(90)获取()
(pdb)
(91)获取()
(pdb)
(92)获取()
(pdb)
(101)获取()
(pdb)
键错误:12616
(101)获取()
(pdb)
- 返回 -
(101)获取()->无
(pdb)
键错误:12616
(149)__进入__()
(pdb)
- 返回 -
(149)__enter__()->无
(pdb)
键错误:12616
(968)_find_and_load()
(pdb)
- 返回 -
(968)_find_and_load()->无
(pdb)
键错误:12616
(1)()
(pdb)
- 返回 -
(1)()->无
(pdb)
键错误:12616
c:\程序文件python36\lib\bdb.py(434)run()
-> exec(cmd,全局变量,局部变量)
(pdb)
c:\程序文件python36\lib\bdb.py(435)run()
-> 除了 BdbQuit:
(pdb)
c:\程序文件python36\lib\bdb.py(438)run()
-> self.quitting = True
(pdb)
回溯(最近一次通话最后):
文件 ”",第 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.glewkivy.deps.sdl2都以管理员模式安装,则它可以正常工作。

我认为问题在于太多被硬编码到site-packages\kivy\deps\*\__init__.py

我想知道是否有更规范的方法将 Pip 包中的 DLL 添加到PATH ...?

好问题,但我不知道团队是如何得出他们目前的解决方案的。 至少我们现在可以缩小范围,所以这是向前迈出的一步。

顺便说一句,你熟悉virtualenv吗? 我通常使用这些并且很少有问题。 所以现在你可以做(​​管理员):

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) 复制到存储库中,然后将此存储库添加到路径变量。

我使用管理员权限(https://kivy.org/docs/installation/installation-windows.html)安装了kivy,我尝试使用用户权限(用户laurent)运行然后发生错误:[CRITICAL] [Window] 无法找到任何有价值的窗口提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。

复制新文件夹中的所有 dll 可以解决问题。 我的问题是如何安装 kivy 以使用用户权限运行 kivy ?

PS对不起,我的英语和python不好

顺便说一句,你熟悉virtualenv吗? 我通常使用这些并且很少有问题。 所以现在你可以做(​​管理员):

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\binC:\Program Files\Python37\share\angle\bin添加到了我的 PATH 中。 我做了我认为@LaurentBerger所做的事情,将这两个文件复制到另一个目录中,然后将该目录添加到路径中。 使用带有两个 PATH 选项的 virtualenv 对我也不起作用。

我正在使用 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
[信息] [Python] v3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 位 (AMD64)]
[INFO] [Factory] ​​194 个符号已加载
[信息] [图像] 提供者:img_tex、img_dds、img_sdl2、img_gif(img_pil、img_ffpyplayer 被忽略)
[信息] [文本] 提供者:sdl2
[信息] [窗口] 提供者:sdl2
[CRITICAL] [Window] 找不到任何有价值的 Window 提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
文件“C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core__init__.py”,第 67 行,在 core_select_lib
cls = cls()
文件“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
return _bootstrap._gcd_import(name[level:], package, level)
文件 ”",第 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

[CRITICAL] [App] 无法获取窗口,中止。
```

在这个问题上,我看到了混合库架构(64 位 Python,32 位 SDL2),所以这是第一站。 是的,如果您混合了拱门,则根本不会使用库,并且 Kivy 将无法工作。
通过 kivy.deps.sdl2 安装 SDL2 应该可以。

我正在使用 python 3.7,我收到了这个错误。 kivy 版本是 1.10.1
我该如何解决

同样在这里 python 3.7 , kivy 版本是 1.10.1 并尝试了所有方法来加载 DLL 但毫不留情。

我遇到过同样的问题。 这个视频可以帮助那些有视觉的人! https://youtu.be/gt-qndBYrCQ

有很多问题,但设法解决了。 这是我学到的(使用 PyCharm):
1) 你不能在 Python 3.8 上安装 Kivy。 如果您有 3.8,请返回 3.7。
2)我安装了其他人发布图片的所有软件包。 我会在这里发布我的。 转到您的项目解释器并点击“+”按钮将它们全部添加。 他们应该成功安装。
pkg1
pkg2
3) 得到窗口 sdl2 错误。 观看了这个短片(https://www.youtube.com/watch?v=e_jv8KsYBrs&t=212s)(愿上帝保佑这个人)并改变了我在系统环境中的路径。
4)然后我从 Kivy 网站重新安装了依赖项——它成功了!!!

希望这对某人有帮助!!!!

顺便说一句,你熟悉virtualenv吗? 我通常使用这些并且很少有问题。 所以现在你可以做(​​管理员):

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\binC:\Program Files\Python37\share\angle\bin添加到了我的 PATH 中。 我做了我认为@LaurentBerger所做的事情,将这两个文件复制到另一个目录中,然后将该目录添加到路径中。 使用带有两个 PATH 选项的 virtualenv 对我也不起作用。

我正在使用 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 等级

相关问题

phelantomas picture phelantomas  ·  5评论

KeyWeeUsr picture KeyWeeUsr  ·  5评论

anas1434 picture anas1434  ·  4评论

Fogapod picture Fogapod  ·  6评论

thagh05t picture thagh05t  ·  5评论