python中importlib库用法详解

importlib是一个模块,可以进行动态导入模块。

导入模块的对比:

示例代码:

import importlib
import time

t1 = __import__('time')
t2 = importlib.import_module('time')

print(t1 is t2)
print(t1 == t2)

print(time is t1)
print(time == t1)
print(time is t2)
print(time == t2)

print(time is t1 is t2)
print(time == t1 == t2)

运行结果:

importlib模块支持传入字符串来引入一个模块。创建两个简单的模块来验证这个功能。创建两个模块,分别为test.py和test2.py,代码如下所示,

def main():
    print(__name__)

使用importlib来引入它们。新建一个文件与test.py和test2.py在同意目录下。

import importlib


def dynamic_import(module):
    return importlib.import_module(module)


if __name__ == "__main__":
    module = dynamic_import('test')
    module.main()

    module_two = dynamic_import('test2')
    module_two.main()

运行结果:

验证模块是否存在

示例代码:

import importlib
import importlib.util  # 只能这样导入util


def check_module(module_name):
    module_spec = importlib.util.find_spec(module_name)
    if module_spec is None:
        print("Module :{} not found".format(module_name))
        return None
    else:
        print("Module:{} can be imported!".format(module_name))
        return module_spec


def import_module_from_spec(module_spec):
    module = importlib.util.module_from_spec(module_spec)
    module_spec.loader.exec_module(module)
    return module


if __name__ == "__main__":
    module_spec = check_module("fake_module")
    if module_spec:
        module = import_module_from_spec(module_spec)
        print(dir(module))
    print("*" * 100)
    module_spec = check_module("time")
    if module_spec:
        module = import_module_from_spec(module_spec)
        print(dir(module))

运行结果:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值