当某个模块无法导入时,是否有关于库的行为方式的标准做法?它应该只是让一个例外飞行,还是应该抓住它并优雅地退出并提供适当的信息?
例如我有这样的事情:
try:
from argparse import ArgumentParser
except ImportError:
print('fathom library requires python 3.2 or argparse package.')
是好还是坏?
答案 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)
这是一个品味问题。我喜欢你的方法。它清晰干净。