Python动态导入模块的方法实例分析


Posted in Python onJune 28, 2018

本文实例讲述了Python动态导入模块的方法。分享给大家供大家参考,具体如下:

一、正常导入模块

正常模块导入方式: import module(模块路径)

同时导入多个模块:

import os,sys,socket

二、动态导入模块

动态导入模块允许我们通过字符串形式来导入模块

2.1 __import__函数,接受一个字符串参数

import os, sys
my_sys = __import__('sys')
my_os = __import__('os')
print(sys.version)
print(my_sys.version)
print('-------------')
print(os.getcwd())
print(my_os.getcwd())

输出:

3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
-------------
G:\python\untitled\study8
G:\python\untitled\study8

我们将sys, os 模块名当中参数传入__import__函数中,可以看出my_sys 和my_os 其实就是相当于 os , sys 模块了。

2.2 __import__函数导入自己的模块

我们在lib包中有一个test.py模块,我们如何通过__import__函数来导入该模块呢?

# test.py内容
class Person(object):
  def __init__(self):
    self.name = 'bigberg'
# 导入模块
mod = __import__('lib.test') # 相当于获取了 lib 的路径
print(mod)
obj = mod.test.Person()
print(obj.name)

输出:

<module 'lib' from 'G:\\python\\untitled\\study8\\lib\\__init__.py'>
bigberg

2.3 动态导入模块列表

moduleNames = ['sys', 'os', 'socket']
print(type(map))
# 在python3 map函数不在是内置函数,而是class,返回的结果是 可迭代对象
print(isinstance(map(__import__, moduleNames), Iterator))
modules = list(map(__import__, moduleNames))
print(modules[0].version)

输出:

<class 'type'>
True
3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]

现在的modules[0] 就相当于 sys 模块了。

2.4 importlib 模块

动态导入模块时,python官方建议使用importlib模块,我们同样导入lib/test.py

import importlib
mod = importlib.import_module('lib.test') # mod相当于 test.py本身了,于上例不同
print(mod)
obj = mod.Person()
print(obj.name)

输出:

<module 'lib.test' from 'G:\\python\\untitled\\study8\\lib\\test.py'>
bigberg

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中请使用isinstance()判断变量类型
Aug 25 Python
Python存取XML的常见方法实例分析
Mar 21 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
python实例化对象的具体方法
Jun 17 Python
python 如何实现遗传算法
Sep 22 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
解决python3中os.popen()出错的问题
Nov 19 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
Jun 28 #Python
python实现将读入的多维list转为一维list的方法
Jun 28 #Python
numpy matrix和array的乘和加实例
Jun 28 #Python
python 按不同维度求和,最值,均值的实例
Jun 28 #Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 #Python
python 列表降维的实例讲解
Jun 28 #Python
基于Python中求和函数sum的用法详解
Jun 28 #Python
You might like
php 缩略图实现函数代码
2011/06/23 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
微信小程序实现简单购物车功能
2020/12/30 Javascript
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
flask 实现token机制的示例代码
2019/11/07 Python
Python如何实现的二分查找算法
2020/05/27 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
行政经理的岗位职责
2013/11/23 职场文书
教师专业自荐书范文
2014/02/10 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
车间核算员岗位职责
2014/07/01 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL