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 socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python引用DLL文件的方法
May 11 Python
详解Python中dict与set的使用
Aug 10 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
Python面向对象类继承和组合实例分析
May 28 Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
基于python检查矩阵计算结果
May 21 Python
Python中的__init__作用是什么
Jun 09 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
教你怎么用Python监控愉客行车程
Apr 29 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 OPCode缓存 APC详细介绍
2010/10/12 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
php树型类实例
2014/12/05 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
Python生成短uuid的方法实例详解
2018/05/29 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
亿企通软件测试面试题
2012/04/10 面试题
护理专业的自荐信
2013/10/22 职场文书
物流专业大学生的自我鉴定
2013/11/13 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
书香家庭事迹材料
2014/05/09 职场文书
班训口号大全
2014/06/18 职场文书
作风年建设汇报材料
2014/08/14 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
北大自主招生自荐信
2015/03/04 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
公司禁烟通知
2015/04/23 职场文书
师德培训心得体会2016
2016/01/09 职场文书