python:错误导入语句导入模块导致ImportError信息不全

1 投票
2 回答
539 浏览
提问于 2025-04-15 22:53

我有个有趣的问题想请教大家。

我在导入一个模块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 可以用来真正加载那个模块。

撰写回答