我正在开发一个Python模型,如果安装了正确的模块,它将支持图形化。我希望源代码尽可能相同,IE,如果图形模型无法加载,图形将从菜单逻辑中忽略。
我该如何做到这一点?
答案 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)