python中importlib库用法详解
  TEZNKK3IfmPf 2023年11月13日 27 0

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)

运行结果:

python中importlib库用法详解

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

运行结果:

python中importlib库用法详解

验证模块是否存在

示例代码:

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

运行结果:

python中importlib库用法详解

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   39   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   28   0   0 python
  TEZNKK3IfmPf   2024年05月31日   35   0   0 excelpython
  TEZNKK3IfmPf   2024年05月31日   31   0   0 python
TEZNKK3IfmPf