python:导入失败时的库行为

时间:2011-04-11 21:07:28

标签: python import importerror

当某个模块无法导入时,是否有关于库的行为方式的标准做法?它应该只是让一个例外飞行,还是应该抓住它并优雅地退出并提供适当的信息?

例如我有这样的事情:

try:
   from argparse import ArgumentParser
except ImportError:
   print('fathom library requires python 3.2 or argparse package.')

是好还是坏?

3 个答案:

答案 0 :(得分:4)

图书馆应始终提出ImportError而不是退出;程序可能希望有条件地包含它(可能在它不可用时替换它)。

如果较低级别的模块会提升ImportError,那么最好的方法就是在附加额外信息的情况下重新提升它。

答案 1 :(得分:2)

如果可以,请使用您的软件包分发模块,然后按照此模式选择您正在使用的模块(更喜欢Python 3.x,默认为您的软件)。

如果没有,这通常是可以的,只要你也确保这不会在以后默默地引起更加模糊的异常(即,确保你在except结束时进行清理并且很有可能,要么重新抛出这个异常,要么自己扔掉。)

PS - This wasn't an uncommon occurrence for simplejson before it got included in Python proper as well

答案 2 :(得分:0)

这是一个品味问题。我喜欢你的方法。它清晰干净。