Python中的ImportError是什么意思?
我尝试导入一个模块:
import cv
结果出现了以下错误信息:
ImportError: DLL load failed: The specified module could not be found.
但是如果我尝试导入一个肯定不存在的库,比如:
import blabla
我得到的是:
ImportError: No module named blabla
所以,我得出的结论是,cv
库并不是完全隐藏的。Python能看到一些东西。有没有人知道Python能看到什么,以及缺少了什么?
补充说明
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
补充说明 2
在包含cv
库的目录下,有一个子目录(C:\OpenCV2.2\bin
),里面有很多*.dll
文件。所以,我尝试了:
import sys
sys.path.append("C:\OpenCV2.2\bin")
但我仍然遇到“dll加载失败”的问题。有没有办法找出到底缺少哪个“dll”文件?我的意思是,Python试图找到一个特定的dll文件(比如cv.dll),但找不到它?
3 个回答
0
很可能是Python找到了一个纯Python的模块cv,但这个模块找不到它需要的一个DLL文件。
1
ImportError(导入错误)可能会让人感到困惑,因为它可能是在你尝试导入的模块又去导入其他东西时发生的。而且,由于所有的导入代码都是用C语言写的,有时候你得不到有用的错误追踪信息。
在这种情况下,看起来cv本身可能是一个DLL(动态链接库),或者它尝试导入的某个模块是DLL。这个DLL无法加载,因为它依赖于你系统上缺失的其他DLL。
如果你无法轻易找到缺失的依赖项,可以尝试使用微软的'depends'工具来查找。
3
在这个特定的情况下,“DLL加载失败”是因为你在用Python 2.6配合OpenCV 2.2。你应该使用Python 2.7,因为cv.pyd这个文件是和python27.dll这个文件关联在一起的。