我有一个导入模块的模块,但在某些情况下,导入的模块可能不存在。模块导入后,有一个类继承了导入模块的类。如果我在模块不存在的情况下捕捉到ImportError
异常,我如何阻止Python解析模块的其余部分?如果这是不可能的,我愿意接受其他解决方案。如何在完成解析之前退出模块?
这是一个基本的例子(selfaware.py):
try:
from skynet import SkyNet
except ImportError:
class SelfAwareSkyNet():
pass
exit_module_parsing_here()
class SelfAwareSkyNet(SkyNet):
pass
的唯一途径我能想到做到这一点是:
- 导入
selfaware.py
模块之前,检查skynet
模块是可用的,只需传递或创建一个存根类。如果多次导入selfaware.py
,这将导致DRY。 在
selfaware.py
之内有与try
块一起定义的类。例如: -try: from skynet import SkyNet class SelfAwareSkyNet(SkyNet): pass except ImportError: class SelfAwareSkyNet(): pass
有什么不对您的解决方案?它不起作用吗?它有错误吗? – 2009-02-23 10:58:30