问题:
__import__
的导入错误与嵌套导入错误?try
语句之外,还有另一种检查模块存在性和可访问性的可靠方法吗?故事:
我在python2.7/unittest/loader.py
中找到了此代码。
parts = name.split('.')
if module is None:
parts_copy = parts[:]
while parts_copy:
try:
module = __import__('.'.join(parts_copy))
break
except ImportError:
del parts_copy[-1]
if not parts_copy:
raise
它尝试通过它name
导入模块。如果失败,则会从parts
列表中删除最后一部分并再次尝试,直到列表为空。
代码依赖于ImportError
异常。它基于以下假设:异常意味着指定的name
不是模块名称,而是该模块中某个对象的名称(可能是函数或类)。
问题是嵌套导入可能会引发ImportError
异常,包括我自己的模块。如果是这样,我不希望通过此代码将此错误抑制并作为正常情况处理。我想知道为什么我的代码在没有深入了解库源代码的情况下不起作用。但是这种问题使得它变得困难并浪费了开发人员的时间。我想提议更改此库,但我不确定在这种情况下什么是好的解决方案。