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实现监控windows服务并自动启动服务示例
Apr 17 Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
python3爬取淘宝信息代码分析
Feb 10 Python
python实现图片彩色转化为素描
Jan 15 Python
python实现桌面壁纸切换功能
Jan 21 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
python3.5的包存放的具体路径
Aug 16 Python
python logging模块的使用详解
Oct 23 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中Array相关函数简介
2016/07/03 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
一道python走迷宫算法题
2018/01/22 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
linux安装python修改默认python版本方法
2019/03/31 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
python小项目之五子棋游戏
2019/12/26 Python
python中count函数简单用法
2020/01/05 Python
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
Java语言的优势
2015/01/10 面试题
入职担保书范文
2014/05/21 职场文书
党校党性分析材料
2014/12/19 职场文书
战马观后感
2015/06/08 职场文书
创业计划书介绍
2019/04/24 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
php png失真的原因及解决办法
2021/10/24 PHP
Javascript webpack动态import
2022/04/19 Javascript