python:错误导入语句导入模块导致ImportError信息不全
我有个有趣的问题想请教大家。
我在导入一个模块A,而这个模块A又试图导入一个不存在的模块B。结果当然会出现一个导入错误(ImportError)。
这就是A.py的内容:
import B
现在我们来导入A:
>>> import A
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/tmp/importtest/A.py", line 1, in <module>
import B
ImportError: No module named B
好了,接下来就是问题了。我该如何知道这个导入错误是因为导入A导致的,还是因为A内部有个错误的导入,而不需要查看错误信息的具体内容呢?
这两者的区别在于,要么是模块A根本不存在,要么是A里面的导入语句有问题。
希望你们能帮我解决这个问题……
谢谢大家!
2 个回答
0
你也可以查看回溯信息,这些信息可以在代码中找到。
不过,为什么你想要搞清楚这个呢?反正无论如何,A这个方法都行不通。
2
在标准库中有一个叫做 imp
的模块,所以你可以这样做:
>>> import imp
>>> imp.find_module('collections')
(<_io.TextIOWrapper name=4 encoding='utf-8'>, 'C:\\Program Files\\Python31\\lib\\collections.py', ('.py', 'U', 1))
>>> imp.find_module('col')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
imp.find_module('col')
ImportError: No module named col
当找不到模块时,它会抛出一个 ImportError
错误。因为它并不是在尝试导入那个模块,所以是否会出现 ImportError
错误和那个特定的模块没有关系。
当然,还有一个 imp.load_module
可以用来真正加载那个模块。