I am trying to reload an entire custom package of modules that I wrote.
There is another question that I looked into on here, but it does not look like it works in my case.
modules/__init__.py
# based on info from https://stackoverflow.com/questions/1057431/loading-all-modules-in-a-folder-in-python
import os
for module in os.listdir(os.path.dirname(__file__)):
    if module[0:8] != '__init__' and module[-3:] == '.py':
        if module in dir(os.path.dirname(__file__)):
            reload(module)
        else:
            __import__(module[:-3], locals(), globals())
del module
del os
Loading modules:
import modules
def loadModule(self, moduleName):
    """
    Load the module with the give name
    i.e. "admin" would load modules/admin.py
    Args:
        moduleName (str): name of the module (admin would load the admin.py file)
    Returns:
        boolean: success or failure of load
    Raises:
        None
    """
    retLoadedCorrectly = False
    # reload everything to dynamically pick up new stuff
    reload(modules)
    # grab the module
    try:
        m = getattr(modules, moduleName)
        # save it
        self.loadedModules[m.commandName] = {'module': moduleName, 'admin': m.adminOnly, 'version': m.version}
        # Yay it loaded :)
        retLoadedCorrectly = True
        # log it
        self.log('Loaded module: {0}, {1}, {2}, {3}'.format(moduleName, m.commandName, m.adminOnly, m.version))
    except AttributeError:
        self.log('Failed to load module: {0}'.format(moduleName), level='WARNING')
    return retLoadedCorrectly
If I call loadMudule("example") it will load and run as expected.  Then if I change example, then call the loadModules method again, then it will not pick up the changes.
I read about importlib but that looks like it is python 3 only and I am using python 2.7.6
If this is a bad way of doing it, by all means point me in a better direction!
 
    