import module from string variable

前端 未结 5 1782
离开以前
离开以前 2020-11-22 07:17

I\'m working on a documentation (personal) for nested matplotlib (MPL) library, which differs from MPL own provided, by interested submodule packages. I\'m writing Python sc

5条回答
  •  说谎
    说谎 (楼主)
    2020-11-22 07:46

    I developed these 3 useful functions:

    def loadModule(moduleName):
        module = None
        try:
            import sys
            del sys.modules[moduleName]
        except BaseException as err:
            pass
        try:
            import importlib
            module = importlib.import_module(moduleName)
        except BaseException as err:
            serr = str(err)
            print("Error to load the module '" + moduleName + "': " + serr)
        return module
    
    def reloadModule(moduleName):
        module = loadModule(moduleName)
        moduleName, modulePath = str(module).replace("' from '", "||").replace("", '').split("||")
        if (modulePath.endswith(".pyc")):
            import os
            os.remove(modulePath)
            module = loadModule(moduleName)
        return module
    
    def getInstance(moduleName, param1, param2, param3):
        module = reloadModule(moduleName)
        instance = eval("module." + moduleName + "(param1, param2, param3)")
        return instance
    

    And everytime I want to reload a new instance I just have to call getInstance() like this:

    myInstance = getInstance("MyModule", myParam1, myParam2, myParam3)
    

    Finally I can call all the functions inside the new Instance:

    myInstance.aFunction()
    

    The only specificity here is to customize the params list (param1, param2, param3) of your instance.

提交回复
热议问题