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多线程学习资料
Dec 19 Python
php使用递归与迭代实现快速排序示例
Jan 23 Python
python中Genarator函数用法分析
Apr 08 Python
Django在win10下的安装并创建工程
Nov 20 Python
Random 在 Python 中的使用方法
Aug 09 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
python中的colorlog库使用详解
Jul 05 Python
python opencv调用笔记本摄像头
Aug 28 Python
python处理excel绘制雷达图
Oct 18 Python
如何在django中实现分页功能
Apr 22 Python
PyTorch-GPU加速实例
Jun 23 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
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
jQuery中调用WebService方法小结
2011/03/28 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
Python 通配符删除文件的实例
2018/04/24 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
Python如何读取文件中图片格式
2020/01/13 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
节能环保标语
2014/06/12 职场文书
2015年幼儿园个人工作总结
2015/04/25 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
教师学习心得体会范文
2016/01/21 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android
使用Redis实现分布式锁的方法
2022/06/16 Redis