Python importlib动态导入模块实现代码


Posted in Python onApril 16, 2020

阅读目录

一般而言,当我们需要某些功能的模块时(无论是内置模块或自定义功能的模块),可以通过import module 或者 from * import module的方式导入,这属于静态导入,很容易理解。

而如果当我们需要在程序的运行过程时才能决定导入某个文件中的模块时,并且这些文件提供了同样的接口名字,上面说的方式就不适用了,这时候需要使用python 的动态导入。

importlib使用

如在scripts目录中保存着一些功能模块,向外提供类似的接口poc()和脚本描述信息description,需要传入一个参数target,当然脚本执行的功能是不一样的,以下只是举例:

starnight:EXP-M starnight$ ls scripts/
__init__.py   __pycache__   test1.py    test2.py    test3.py
starnight:EXP-M starnight$ cat scripts/test1.py 
#!/usr/bin/env python
# -*- coding:utf-8 -*-
description = 'it is a test1'
def poc(target):
  print('it is a test1')

  return True

而我们需要动态传入脚本名,来选用此时要执行的功能:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import importlib

script_name = input('please input script_name : ')
 # 手动输入脚本名






 
module = importlib.import_module('scripts.{}'.format(script_name))

# 动态导入相应模块
func = module.poc('')


# 执行脚本功能
print(module.description)
  # 获取脚本描述信息
please input script_name : test1
it is a test1
it is a test1

...

please input script_name : test3
it is a test3
it is a test3

当我们动态给定脚本名字时,就会动态的导入该模块,执行相应的功能。

importlib其他介绍

python doc: importlib

importlib中的几个函数:__import__、import_module、find_loader、invalidate_caches、reload

"Note Programmatic importing of modules should use import_module() instead of this function."

当进行编程时,使用import_module,如上使用该模块。

find_loader用来查找模块,reload重新载入模块,invalidate_caches不多介绍了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python语言编写电脑时间自动同步小工具
Mar 08 Python
Python内建数据结构详解
Feb 03 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
浅谈Python peewee 使用经验
Oct 20 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
详解Python字典小结
Oct 20 Python
Python3 修改默认环境的方法
Feb 16 Python
django项目登录中使用图片验证码的实现方法
Aug 15 Python
Python如何存储数据到json文件
Mar 09 Python
详细分析Python垃圾回收机制
Jul 01 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 Python
python_tkinter事件类型详情
Mar 20 Python
pandas数据拼接的实现示例
Apr 16 #Python
python 生成任意形状的凸包图代码
Apr 16 #Python
Python telnet登陆功能实现代码
Apr 16 #Python
基于python 凸包问题的解决
Apr 16 #Python
python实现交并比IOU教程
Apr 16 #Python
python 弧度与角度互转实例
Apr 15 #Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 #Python
You might like
php+dbfile开发小型留言本
2006/10/09 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
php中上传文件的的解决方案
2018/09/25 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
javascript radio 联动效果
2009/03/04 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
php跨域调用json的例子
2013/11/13 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
javascript中定义类的方法汇总
2014/12/28 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
绿化先进工作者事迹材料
2014/01/30 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
python的变量和简单数字类型详解
2021/09/15 Python