如果用户尝试运行尝试导入尚未安装的模块的python脚本,我想实现一些友好的错误消息。这包括打印如何安装缺少的模块的说明。这样做将是把进口围绕try..catch块关于为缺少的模块导入的Friendlier错误消息
的一种方式,但是这是一个有点难看,因为它会变成一些简单的像
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
会表现得像我想要的吗?
有没有人知道这个问题的任何现有解决方案?
我想,这可能是最好的建议的解决方案。它不依赖任何特殊的“技巧”,因为它应该非常强大。同时,它不需要对源代码进行任何更改(除了可以添加正确的路径到sys.path,这可以轻松处理)。 – pafcu 2009-10-25 14:06:49