我正在编写一个以命令作为参数的Python应用程序,例如:
$ python myapp.py command1
我希望应用程序是可扩展的,也就是说,能够添加实现新命令的新模块而不必更改主应用程序源。这棵树看起来像:
myapp/
__init__.py
commands/
__init__.py
command1.py
command2.py
foo.py
bar.py
因此,我希望应用程序在运行时找到可用的命令模块并执行相应的命令模块。
Python定义了__import__函数,该函数使用一个字符串作为模块名称:
__import __(name,globals = None,locals = None,fromlist =(),level = 0)
该函数导入模块名称,可能使用给定的全局变量和局部变量来确定如何在包上下文中解释该名称。fromlist给出了应从名称给定的模块中导入的对象或子模块的名称。