【问题标题】:sdl2 - ImportError: DLL load failed: The specified module could not be found and [CRITICAL] [App] Unable to get a Window, abortsdl2 - ImportError: DLL load failed: The specified module could not be found and [CRITICAL] [App] Unable to get a Window, abort
【发布时间】:2018-09-04 02:00:48
【问题描述】:
  • Python: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 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()

【问题讨论】:

  • 你的sdl安装好像有问题,不用kivy.deps.sdl2可以试试吗?
  • 您是否在通过 PyCharm IDE 运行 Kivy 应用程序时收到此错误?
  • 要在没有 'kivy.deps.sdl2' 的情况下运行它,导入错误就会消失,但是我仍然收到有关无法找到窗口的错误,中止。是的,这是尝试在 PyCharm 中运行它

标签: python dll kivy sdl-2


【解决方案1】:

我遇到了同样的问题。我首先通过删除 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 答案。

【讨论】:

  • 只需添加第二行(安装 docutils、pygments 等)而不卸载 kivy,它仍然有效。
  • 谢谢,已解决!我命令 *.py 不是在 pycharm 中而是在 python 控制台中,它解决了......也许是 pycharm 错误(或 env 设置错误)?
  • 非常感谢,现在我终于可以运行我的应用程序了。
【解决方案2】:

07-2021,Python 3.9

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

**来自 Windows 菜单/浏览器:

删除程序

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

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

一定要检查:

将PATH变量添加到系统

现在,在安装 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

这就解决了整个问题。

附言。如果你写angin命令IE:

    python -m pip install kivy.deps.angle

文件位置应显示为 IE:

c:/programs/python39....

不是作为你的主目录

(但是如果您以普通用户身份运行 cmd...然后它就无法工作...。但是如果您的主目录中有所有文件,则必须删除一切在您开始之前:

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

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

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,对我来说,解决方案是使用 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. 根据Javapocalypse's answer安装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
      

    【讨论】:

    • 不要从 Windows 应用商店安装 python; ;移除所有;然后 - 从 python.org 安装,注销并登录,然后: CMD: python -m venv venv @ and@ venv/Scripts/activate @and@ python -m pip install kivy ... TADA :)
    【解决方案4】:

    我在 Python 3.9.1 中遇到了同样的问题。

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

        • 我认为 .py 文件的名称与此无关。将其更改为 main.py 并没有改变任何内容,并且消息正在谈论无论如何要找到窗口提供程序,而不是无法找到 .py 文件本身。
        【解决方案7】:

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

        尝试从“PROJECT\venv\lib\site-packages\kivy\core\window\_window_sdl2.cp37-win_amd64.pyd”导入“sdl2”提供程序失败。当缺少依赖项,或者 Windows PATH 上有相同依赖项 dll 的多个副本并且它们彼此不兼容时,通常会遇到此错误。如果您正在混合安装(例如不同的 python 安装,如 anaconda python 和系统 python)或另一个不相关的程序将其目录添加到 PATH,则可能会发生这种情况。请检查您的 PATH 和 python 安装是否存在潜在问题。要进一步解决“DLL 加载失败”错误,请从dependencywalker.com 下载“Dependency Walker”(64 位或 32 位版本 - 匹配您的 python 位)并将环境变量 KIVY_SDL2_DEPENDENCY_WALKER 设置为下载的depends.exe 文件的完整路径并重新运行您的应用程序以生成错误报告

        使用 Dependency Walker 将 PYTHON37.DLL 显示为缺少的内容。

        我怀疑必须使用 Python 的传统系统安装,而不是来自 Microsoft Store 的安装。商店版本似乎在任何地方都没有 DLL。虽然到目前为止我还没有遇到任何原生依赖问题。

        我也尝试从源代码构建而不是使用轮子,但 --no-binary=kivy.deps.sdl2 导致:

        错误:找不到满足要求的版本 kivy-deps.sdl2~=0.3.1; sys_platform == "win32"(来自 kivy)(来自版本:无)
        错误:未找到 kivy-deps.sdl2~=0.3.1 的匹配分布; sys_platform == "win32"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-18
          • 1970-01-01
          • 2011-12-28
          • 1970-01-01
          • 2018-02-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多