当前位置:   article > 正文

python中importlib库用法详解_importlib.util.find_spec

importlib.util.find_spec

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

导入模块的对比:

示例代码:

  1. import importlib
  2. import time
  3. t1 = __import__('time')
  4. t2 = importlib.import_module('time')
  5. print(t1 is t2)
  6. print(t1 == t2)
  7. print(time is t1)
  8. print(time == t1)
  9. print(time is t2)
  10. print(time == t2)
  11. print(time is t1 is t2)
  12. print(time == t1 == t2)

运行结果:

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

  1. def main():
  2. print(__name__)

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

  1. import importlib
  2. def dynamic_import(module):
  3. return importlib.import_module(module)
  4. if __name__ == "__main__":
  5. module = dynamic_import('test')
  6. module.main()
  7. module_two = dynamic_import('test2')
  8. module_two.main()

运行结果:

验证模块是否存在

示例代码:

  1. import importlib
  2. import importlib.util # 只能这样导入util
  3. def check_module(module_name):
  4. module_spec = importlib.util.find_spec(module_name)
  5. if module_spec is None:
  6. print("Module :{} not found".format(module_name))
  7. return None
  8. else:
  9. print("Module:{} can be imported!".format(module_name))
  10. return module_spec
  11. def import_module_from_spec(module_spec):
  12. module = importlib.util.module_from_spec(module_spec)
  13. module_spec.loader.exec_module(module)
  14. return module
  15. if __name__ == "__main__":
  16. module_spec = check_module("fake_module")
  17. if module_spec:
  18. module = import_module_from_spec(module_spec)
  19. print(dir(module))
  20. print("*" * 100)
  21. module_spec = check_module("time")
  22. if module_spec:
  23. module = import_module_from_spec(module_spec)
  24. print(dir(module))

运行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/272277
推荐阅读
相关标签
  

闽ICP备14008679号