1

我有一个有趣的问题想问你们('n gals)。

我正在导入一些模块 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

好吧,直奔问题。如果不查看错误的字符串表示形式,我如何知道此 ImportError 是由导入 A 还是由 A 内部的某些损坏导入引起的。

不同之处在于 A 不存在或确实有不正确的导入语句。

希望你能帮助我...

干杯bb

4

2 回答 2

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实际加载该模块的方法。

于 2010-05-19T10:48:19.620 回答
0

您还可以查看可以在代码中检查的回溯。

但是,您为什么要找出答案 - 无论哪种方式 A 都行不通。

于 2010-05-19T10:39:56.777 回答