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和其他依赖项,但是没有用。
答案 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,所以请尝试这些步骤。