gpt4 book ai didi

python - 在导入的模块中检测 ImportError

转载 作者:行者123 更新时间:2023-11-28 22:56:50 24 4
gpt4 key购买 nike

我想导入一个 Python 模块(如果它存在),但如果不存在则忽略 ImportError。然而,如果导入的模块本身引发了一个ImportError,这个错误也会被忽略,而这不是我所需要的(即如果模块存在,但是有一些错误,我想知道)。

for app in INSTALLED_APPS:
try:
module = __import__('{}.mycustommodule'.format(app))
# Do something with it
except ImportError:
traceback = sys.exc_info()[2]
if ( ? ): # if the exception occurred in app.mycustommodel, raise
raise
pass # otherwise, ignore

我检查了 sys.exc_info 的文档和 traceback但没有找到任何有用的信息。如何做到这一点?

最佳答案

如果异常发生在捕获它的同一函数中,堆栈跟踪将只有一帧。否则,它将有多个帧。看完related questions并进行了一些测试,我发现检查 tb_next 是否为 None 就足够了:

except ImportError:
traceback = sys.exc_info()[2]
if ( traceback.tb_next ):
raise
pass

注意虽然关于tb_next 的文档很少(在 inspect 的文档中看到了对它的引用,但没有具体说明什么构成回溯“级别”) , 以上行为在 Python 2.7.3 之间是一致的, Python 3.2.3 、Jython 2.5.3、IronPython 2.7.3 和 PyPy 1.8.0。

关于python - 在导入的模块中检测 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com