sdl2 - ImportError: DLL load failed: The specified module could not be found and [CRITICAL] [App] Unable to get a Window, abort

sdl2 - ImportError: DLL load failed: The specified module could not be found and [CRITICAL] [App] Unable to get a Window, abort

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 install Pillow
python -m pip install 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()

我遇到了同样的问题。我首先通过删除 Kivy 及其依赖项解决了这个问题。

python -m pip uninstall kivy

python -m pip uninstall kivy.deps.sdl2

python -m pip uninstall kivy.deps.glew

python -m pip uninstall kivy.deps.gstreamer

python -m pip uninstall image

现在正在重新安装除 gstreamer 之外的所有内容。

python -m pip install --upgrade pip wheel setuptools

python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew --extra-index-url https://kivy.org/downloads/packages/simple/

python -m pip install kivy

错误解决了。归功于 Ben R's 答案。

我遇到了同样的问题,对我来说解决方案是使用 virtualenv 而不是 venv。这会强制 Kivy 使用 Python.

的特定安装
  1. 下载并安装Python 3.7,因为似乎还不支持3.8 (https://www.python.org/downloads/release/python-376/)

  2. 如果尚未安装,请安装 virtualenv

    pip install virtualenv

  3. 创建虚拟环境,指定路径到新安装的Python版本

    virtualenv --python=C:\path\to\Python37\python.exe my_venv

  4. 激活新的虚拟环境

    my_venv/Scripts/activate.bat

  5. 按照

    安装kivy
    python -m pip install --upgrade pip wheel setuptools
    
    python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew extra-index-url https://kivy.org/downloads/packages/simple/
    
    python -m pip install kivy
    

先生,请使用 venv 我遇到了同样的错误,但我使用 venv 解决了它。请创建一个 virtualenv 并使用您的安装过程进行安装。有效

我遇到了与 Python 3.9.1 相同的问题。

在默认用户模式下重新安装 kivy.deps.sdl2、kivy.deps.glew、kivy 对我不起作用。

然后我发现了这个评论,建议以管理员模式安装这些包。有用。 https://github.com/kivy/kivy/issues/5677#issuecomment-389990608

保留您的主文件名main.py,否则会引发此错误。 (在做任何事情之前检查这个)。

07-2021, Python 3.9

问题是没有设置PATH变量 (Python 从 Windows 商店安装)。

**来自 windows menu/browser:

remove program

一开始删除任何 python 安装,这将使生活更轻松**

最好从 python.org 下载 python 并以 ADMINISTRATOR 使用已知路径(对所有用户)IE c 安装为“CUSTOM” :/programs/python39

一定要检查:

add to PATH variable to system

现在,安装 python 后 - 我们注销并重新登录。 然后在开始菜单中查找 CMD 和 运行 !!! 作为管理员

管理员位置,按照网站上的说明进行安装: https://kivy.org/doc/stable-1.10.1/installation/installation-windows.html

即:

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

这就解决了整个问题。

Ps。如果你写 angin 命令 IE:

    python -m pip install kivy.deps.angle

文件位置应显示为 IE:

c:/programs/python39.....

但是不是作为你的主目录

(但是如果你作为普通用户 运行 cmd 就可以了...然后 IT 就不起作用....但是如果你有所有您的主目录中的文件您必须在开始之前删除所有文件:

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

然后(作为管理员): python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew

如果启用调试日志记录 (-d),您将获得更多详细信息:

Failed trying to import the "sdl2" provider from "PROJECT\venv\lib\site-packages\kivy\core\window\_window_sdl2.cp37-win_amd64.pyd". This error is often encountered when a dependency is missing, or if there are multiple copies of the same dependency dll on the Windows PATH and they are incompatible with each other. This can occur if you are mixing installations (such as different python installations, like anaconda python and a system python) or if another unrelated program added its directory to the PATH. Please examine your PATH and python installation for potential issues. To further troubleshoot a "DLL load failed" error, please download "Dependency Walker" (64 or 32 bit version - matching your python bitness) from dependencywalker.com and set the environment variable KIVY_SDL2_DEPENDENCY_WALKER to the full path of the downloaded depends.exe file and rerun your application to generate an error report

使用 Dependency Walker 显示缺少 PYTHON37.DLL。

我怀疑必须使用 Python 的传统系统安装,而不是 Microsoft Store 中的安装。 Store 版本似乎在任何地方都没有 DLL。虽然直到现在我还没有遇到任何本地依赖项的问题。

我也尝试过从源代码构建而不是使用 wheel,但是 --no-binary=kivy.deps.sdl2 结果是:

ERROR: Could not find a version that satisfies the requirement kivy-deps.sdl2~=0.3.1; sys_platform == "win32" (from kivy) (from versions: none)
ERROR: No matching distribution found for kivy-deps.sdl2~=0.3.1; sys_platform == "win32"