Python 动态导入

首先是项目目录结构

在这里插入图片描述

其中 lib_a.pylib_b.py 代码如图

# lib_a.py
def do_something():
    print("this is lib_a.py")
    
# lib_b.py
def do_something():
    print("this is lib_a.py")

main代码如下

#!/usr/bin/env python
# coding:utf8


import importlib

module_name = "mylib.lib_a"
# module_name = "mylib.lib_b"  # 根据字符串选择导入的模块
module_object = importlib.import_module(module_name)
handler_func = getattr(module_object, "do_something") # 获取动态导入模块中,公共的do_something
handler_func() # 执行


# 实际与 __import__() 相同,但是不推荐使用__import__()
# 而且,如果使用__import__()还要注意传参,否则还需要 module_object.lib_a 加一层级

# importlib 与__import__的区别
# https://www.cnblogs.com/kai-/p/12183455.html
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐