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中比较运算符的使用
May 13 Python
win系统下为Python3.5安装flask-mongoengine 库
Dec 20 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
Django vue前后端分离整合过程解析
Nov 20 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 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简单日历函数
2015/10/28 PHP
微信自定义分享php代码分析
2016/11/24 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
validator验证控件使用代码
2010/11/23 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
《曹刿论战》教学反思
2014/03/02 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
素质教育标语
2014/06/27 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis