While it is fairly trivial in Python to import a \"child\" module into another module and list its attributes, it becomes slightly more difficult when you want to import all
The solution above traversing the filesystem for finding submodules is ok as long as you implement every plugin as a filesystem based module.
A more flexible way would be an explicit plugin list in your main module, and have every plugin (whether a module created by file, dynamically, or even instance of a class) adding itself to that list explicitly. Maybe via a registerPlugin function.
Remember: "explicit is better than implicit" is part of the zen of python.