代码之家  ›  专栏  ›  技术社区  ›  Jaimie Dodd

sdl2-导入错误:DLL加载失败:找不到指定的模块,[关键][应用]无法获取窗口,中止

  •  21
  • Jaimie Dodd  · 技术社区  · 6 年前
    • Python:3.6.4
    • 操作系统:Windows 10
    • Kivy: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
    

    描述

    您好,我正在尝试运行install 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()
    
    7 回复  |  直到 6 年前
        1
  •  39
  •   Alexander Korovin    3 年前

    我也有同样的问题。我首先通过删除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 答复

        2
  •  4
  •   blackmoon    3 年前

    07-2021,Python 3.9

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

    **从windows菜单/浏览器:

    删除程序

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

    最好从下载python python.org 并安装为 管理员 作为具有已知路径(适用于所有用户)的“自定义”,即c:/programs/python39

    确保检查:

    将路径变量添加到系统

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

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

    ie:

    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: /程序/python39。。。。

    但是 作为您的主目录

    (但如果你跑的话 cmd命令 作为普通用户。。。然后它就不起作用了。。。。但如果主目录中有所有文件,则必须在开始之前删除所有文件:

    python-m pip 卸载 docutils pygments pypiwin32 kivy。部门。sdl2 kivy。部门。glew公司

    然后(作为管理员): python-m pip安装docutils pygments pypiwin32 kivy。部门。sdl2 kivy。部门。glew公司

        3
  •  1
  •   WaterInTheLake    4 年前

    我也有同样的问题,对我来说,解决方法是使用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 Javapocalypse's answer

      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
      
        4
  •  1
  •   Alpha Huang    4 年前

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

    重新安装kivy。部门。sdl2,kivy。部门。glew,kivy在默认用户模式下对我不起作用。

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

        5
  •  0
  •   Uddipta Gogoi    4 年前

    先生,请使用venv。我也有同样的错误,但我用venv解决了。请创建virtualenv并使用安装过程进行安装。它起作用了

        6
  •  0
  •   user15124750 user15124750    3 年前

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

        7
  •  0
  •   OrangeDog    3 年前

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

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

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

    我怀疑必须使用Python的传统系统安装,而不是Microsoft应用商店的安装。商店版本似乎没有任何DLL。尽管到目前为止,我还没有遇到任何与本机依赖关系相关的问题。

    我也试着从源代码构建而不是使用轮子,但是 --no-binary=kivy.deps.sdl2 结果如下:

    错误:找不到满足kivy deps要求的版本。sdl2~=0.3.1;sys\u platform==“win32”(来自kivy)(来自版本:无)
    错误:找不到kivy deps的匹配分发。sdl2~=0.3.1;sys\U平台==“win32”