Python ImportError:DLL加载失败:找不到指定的过程

时间:2016-06-02 16:04:19

标签: dll kivy python-3.4

python34
windows 8.1 64-bit

所以我在安装了依赖项后安装了Kivy,整个过程非常顺利,直到我使用了Kivy的简单" Hello World!"在他们的网站上申请,即:

from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='kfkdnf')

TestApp().run()

出现了这个错误:

ImportError: DLL load failed: The specified procedure could not be found.

我尝试了不同的解决方案,例如重新安装Kivy和其他依赖项,但是没有用。

2 个答案:

答案 0 :(得分:2)

尝试使用以下命令运行以打印更多信息。第一

"python main.py -c kivy:log_level:trace"

如果在加载fbo.pyx后发生,您可以尝试此解决方案:

从“share \ glew \ bin \ glew32.dll”尝试copy glew32.dll到“Lib\site-packages\kivy\graphics\”。

分析:我遇到了同样的问题。并且发现当您只是尝试“import kivy.graphics.opengl”时会发生错误。

通常,使用Sysinternals Suite中的进程监视器(procmon.exe)可以解决几乎任何类型的DLL丢失问题。

运行procmon.exe,添加新过滤器,然后单击“确定”。 “Process Name”“是”“python.exe

然后在工具栏中,只保留文件系统活动,并关闭其他视图。

现在打开一个python会话并运行“import kivy.graphics.opengl”。正如预期的那样,错误显示“DLL加载失败”。此外,许多活动在procmon中显示有关文件系统活动的信息。

不要尝试排序,因为默认情况下它按时间排序,对调试很有用。

检查结果列中的“NAME NOT FOUND”事件。通常,可执行文件将在当前文件夹中搜索DLL,然后在预定义路径中搜索,然后在系统环境“PATH”中搜索。如果您在某个模块上看到“NAME NOT FOUND”事件,请尝试在“PATH”列中搜索模块名称,如果它始终是“NAME NOT FOUND”但没有“SUCCESS”,则它是您找到的缺失DLL。将文件复制到最初搜索的路径。

就我而言,我发现glew32.dll始终是“NAME NOT FOUND”。由于Kivy的一个依赖是kivy.deps.glew,使用任何PE工具检查\Lib\site-packages\kivy\graphics\opengl.pyd,发现opengl.pyd的DLL依赖之一是glew32.dll,因此它确认了结果从流程监控器中,glew32.dll需要导入opengl.pyd (dll)

所以我将glew32.dll从“share\glew\bin\”复制到“\Lib\site-packages\kivy\graphics\"

这个问题在我身边得到了解决。

使用Process Monitor可以解决所有其他DLL缺失问题。希望这个建议有所帮助。

答案 1 :(得分:0)

编译错误或以这种方式发生的事情发生了。也许你的Cython版本太高了?基本上你缺少一个应该编译的重要文件的一部分,可能来自kivy.graphics。卸载kivy,重新安装deps。如果您尝试从源代码编译,请安装文档中提到的mingwpy

或者使用已经编译为windows的源代码的轮子(有链接,你只需要重命名和安装)。

或使用KivyInstaller

此外,尝试在谷歌搜索“未找到kivy DLL”,你也会得到一些链接到SO。有issue at github,所以请尝试这些步骤。