【发布时间】:2017-05-03 13:15:36
【问题描述】:
如果用户尝试运行尝试导入尚未安装的模块的 python 脚本,我想实现一些更友好的错误消息。这包括打印出有关如何安装缺少的模块的说明。
这样做的一种方法是在导入周围放置一个 try..catch 块,但这有点难看,因为它会变得像这样简单
import some_module
进入
try:
import some_module
except ImportError, e:
handle_error(e)
它必须添加到每个文件中。此外, ImportError 似乎没有将丢失模块的名称存储在任何地方(消息中除外),因此如果您需要知道名称(就像我一样),您必须在每个导入周围放置一个单独的 try..catch .解析模块的名称不是选项,因为 ImportError 携带的消息可能会因 python 版本而异,具体取决于用户的语言环境。
我想我可以使用 sys.excepthook 来捕获所有异常并传递除了 ImportError 之外的那些异常。 或者是否可以定义类似的东西
safe_import some_module
这会像我想要的那样吗?
有人知道这个问题的任何现有解决方案吗?
【问题讨论】: