根据可用库更改程序流程

时间:2011-10-22 23:10:30

标签: python matplotlib graph

我正在开发一个Python模型,如果安装了正确的模块,它将支持图形化。我希望源代码尽可能相同,IE,如果图形模型无法加载,图形将从菜单逻辑中忽略。

我该如何做到这一点?

3 个答案:

答案 0 :(得分:7)

尝试导入并在失败时设置标志。然后使用该标志确定是否提供图形输出:

try:
    import Tkinter
    gui_installed = True
except ImportError:
    gui_installed = False


...

result = somecalc()
if gui_installed:
    display_with_gui(result)
else:
    display_as_text(result)

答案 1 :(得分:1)

是。您可以在import - try块中包含except语句。它通常用于向后兼容性。例如,通过将后备模块导入为所需模块。这样,其余代码可能无视实际使用的模块。

答案 2 :(得分:0)

而不是标记为suggested by @Raymond Hettinger,您可以将None设置为提供可选功能的实际名称:

try: import Tkinter
except ImportError:
    display_with_gui = None
else:
    def display_with_gui(): # use Tkinter here
        pass

result = somecalc()
if display_with_gui:
    display_with_gui(result)
else:
    display_as_text(result)