Kivy 错误(python 2.7):sdl2 导入错误

Posted

技术标签:

【中文标题】Kivy 错误(python 2.7):sdl2 导入错误【英文标题】:Kivy error (python 2.7) : sdl2 import error 【发布时间】:2018-09-03 03:23:31 【问题描述】:

我正在尝试在我的 Python 2.7 项目中使用 kivy(在 PyCharm - Windows 10 环境中),但出现以下错误。

如果有人可以帮助我?谢谢!

PS:我尝试了很多次卸载/重新安装库等并按照类似帖子的建议进行操作,但它不起作用:Kivy not working (Error: Unable to find any valuable Window provider.)

[INFO   ] [Logger      ] Record log in C:\Users\cyril\.kivy\logs\kivy_18-03-25_0.txt
 C:\Users\cyril\venv\lib\site-packages\kivy\modules\__init__.py:128: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
   if path not in sys.path:
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif (img_sdl2, img_pil, img_ffpyplayer ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: Le module sp�cifi� est introuvable.
  File "C:\Users\cyril\venv\lib\site-packages\kivy\core\__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)
  File "C:\Users\cyril\venv\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.

Process finished with exit code 1

【问题讨论】:

错误信息是否完整?第一条错误消息(第 59 行)中应该有一个左括号,并且可能还有更多内容。 我用完整的错误编辑了帖子 【参考方案1】:

问题

它正在你的 virtualenv 中寻找 Kivy 依赖项(例如 sdl2)。

解决方案

我也遇到了同样的问题。我做了以下,它解决了这个问题。

环境

Windows 10 PyCharm 社区 Python 3.5 已安装 Kivy 依赖项(docutils、pygments、pypiwin32、kivy.deps.sdl2、kivy.deps.glew、kivy.deps.gstreamer)和 Python 3.5+(kivy.deps .angle)

PyCharm IDE

    打开项目 点击文件 点击设置... 点击项目解释器 在右侧面板上,单击 下拉列表 以获得 Project Interpreter 选择安装 Python 解释器的位置,例如C:\Users\user-name\AppData\Local\Programs\Python\Python35\python.exe 点击确定直到退出设置窗口 运行你的程序

输出

【讨论】:

【参考方案2】:

如果您没有安装所有依赖项,则会出现错误,请使用 pycharm 终端代替 Project Interpreter 然后安装以下

1.python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2==0.1.* kivy_deps.glew==0.1.*

    python -m pip install kivy_deps.gstreamer==0.1.*

    python -m pip install kivy_deps.angle==0.1.*

    python -m pip install kivy==1.11.1

【讨论】:

【参考方案3】:

检查了所有内容,重新安装等仍然没有运气,但在使用 -d(调试)选项后,错误消息扩展并提示路径中可能存在另一个 sdl2.dll。经过反复试验,我在 windows\system32 中找到了一个。将其移开会使错误消失。

【讨论】:

【参考方案4】:

我尝试在虚拟环境中运行该应用程序,并且成功了。

【讨论】:

【参考方案5】:

让我们变得真实,使用虚拟环境。 Kivys 文档甚至强烈推荐这样做。

重复这一步总是给我一个可运行的 kivy-example 首先卸载你已经安装的所有与kivy相关的库。

python -m pip uninstall -y kivy.deps.glew kivy.deps.gstreamer kivy.deps.sdl2 kivy.deps.angle

升级 pip、wheel、setuptools 和 setuptools

python -m pip install --upgrade pip wheel setuptools virtualenv

在你的项目文件夹中创建一个venv并激活它

python -m virtualenv venv
venv\Scripts\activate 

(在 bash 上将“源”放在前面。)

在您的虚拟环境中安装 kivys 依赖项。

python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2==0.1.* 

如果您需要视频和音频支持:

python -m pip install kivy_deps.gstreamer==0.1.*

在 Python 3.5+ 上,您可以选择使用 Angle 来代替 glew,因此可以选择/或:

python -m pip install kivy_deps.glew==0.1.*
python -m pip install kivy_deps.angle==0.1.*

安装kivy

python -m pip install kivy==1.11.1 kivy_examples==1.11.1

然后做

python venv\share\kivy-examples\demo\showcase\main.py

来源:https://kivy.org/doc/stable/installation/installation-windows.html

如果仍然出现“[CRITICAL] [App] Unable to get a Window, abort.”错误, 命令:

set USE_SDL2=1
set USE_GSTREAMER=1

终端:

export USE_SDL2=1
export USE_GSTREAMER=1

【讨论】:

【参考方案6】:

简直不可能,在 win10 上用 3.7 64 尝试了所有这些,同样的例外......这东西不起作用,我想我将不得不尝试 Beeware。令人失望

【讨论】:

以上是关于Kivy 错误(python 2.7):sdl2 导入错误的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Kivy 1.9.1 或 1.9.2 在 OSX 10.12.2 上使用 SDL2 而不是 pygame?

在 Kivy 中使用 sdl2 而不是 pygame

在 centos 7 上使用 SDL2 运行 kivy 1.9.1

Kivy 在 Virtualenv 中对 SDL2 的支持

如何从我的 kivy 程序中删除“sdl2 - ImportError”和“pil - ModuleNotFoundError”

python之kivy模块