我正在编写一个Python作为一个参数的命令,例如:
$ python myapp.py command1
我希望应用程序是可扩展的,也就是说,能够添加实现新命令的新模块,而不必更改主应用程序源。树看起来像这样:
myapp/
__init__.py
commands/
__init__.py
command1.py
command2.py
foo.py
bar.py
所以我希望应用程序在运行时找到可用的命令模块并执行相应的命令模块。
目前,这是实例:
command = sys.argv[1]
try:
command_module = __import__("myapp.commands.%s" % command, fromlist=["myapp.commands"])
except ImportError:
# Display error message
command_module.run()
这工作得很好,我只是想知道是否有一个更习惯的方式来完成我们正在做的代码。
请注意,这不是一个开源项目,我不希望有“插件”。重点是简化主要的应用程序代码,并在每次添加新的命令模块时删除需要修改的代码。
相似问题