如何导入相对于调用者的子模块?

时间:2017-07-25 17:54:55

标签: python python-3.x python-import

导入模块可以在函数中完成,然后传递回调用者,使用这个简单的实用程序。

def import_reload_or_none(name, reload=True):
    try:
        mod = __import__(name)
        if reload:
            import importlib
            mod = importlib.reload(mod)
        return mod
    except Exception:
        import traceback
        traceback.print_exc()
        return None

这适用于根级模块,但是我不确定当函数在另一个模块中或者使用相对导入时如何做到这一点。

如何使用此功能来替换例如:

from . import my_package_module

1 个答案:

答案 0 :(得分:0)

尝试将路径传递给要导入函数的模块,例如:

def import_reload_or_none(name, reload=True, path=None):
    mod = __import__(path + '/' + name) if path is not None else __import__(name)
    if reload:
        import importlib
        mod = importlib.reload(mod)
    return mod

然后,如果要使用相对路径导入,可以使用

import_reload_or_none(my_package_module, path = '.')