您当前的位置: 首页 >  Python

IT之一小佬

暂无认证

  • 5浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python中importlib库用法详解

IT之一小佬 发布时间:2022-08-17 23:04:23 ,浏览量:5

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))

运行结果:

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.2492s