python: import模块的相关问题
来源:互联网 发布:网络直播的商业模式 编辑:程序博客网 时间:2024/05/16 19:52
1. 使用imp.load_module时遇到"ImportError: No module named PAD"异常
文件的目录结构如下:
|--test.py
|--plugins
|--__init__.py
|--PAD.py
|--WEB.py #包含“import PAD"
当在test.py文件中使用imp.load_module(‘WEB’, ...)动态导入WEB.py模块时,提示异常”ImportError: No module named PAD“。test.py的内容如下:
import impfp, pathname, desc = imp.find_module('WEB', ['./plugins',])imp.load_module('WEB', fp, pathname, desc)
这个错误,在使用”import WEB“时不会出现。内容如下:
import plugins.WEB
可见imp在导入模块时,搜索方法和import并不相同。”import WEB“导入时,执行WEB.py文件中的”import PAD“语句,import会在WEB.py的当前目录下查找PAD.py, 而imp只会在sys.path中查找。将test.py的内容改为如下时,则无此异常。
import syssys.path.append('./plugins')import impfp, pathname, desc = imp.find_module('WEB', ['./plugins',])imp.load_module('WEB', fp, pathname, desc)
2.模块被重复导入的可能情况
首先,再决定是否导入模块时,python是通过检查sys.modules来判断的。
test.py内容为如下时,sys.modules字典中对应的WEB模块的键值为:‘plugins.WEB'
import plugins.WEB
test.py内容为如下时,sys.modules字典中对应的WEB模块的键值为:'WEB'
import syssys.path.append('./plugins')import WEB
使用imp导入时,test.py内容如下, sys.modules字典中对应的WEB模块的键值为:‘WEB’
import impfp, pathname, desc = imp.find_module('WEB', ['./plugins',])imp.load_module('WEB', fp, pathname, desc)
总结,sys.modules字典中的键值是依据“到达模块的路径”得到的。如果将要导入模块的键值,不存在于sys.modules时,模块会被再次导入。存在,则不会再被导入。所以,当从不同的出发点(路径)尝试导入同一个模块时,这个模块是可能会被多次导入的。在某些情况下,这是需要注意的细节。
3.不同的导入方法的区别
imp.load_module: 不论模块是否存在,都再次导入。但是间接导入(模块中又使用import导入的其他模块),参照import的规则。
__import__: 检查sys.modules字典,存在则跳过。
import::检查sys.modules字典,存在则跳过。
- python: import模块的相关问题
- Python 在命令行中的import 模块找不到的问题
- 浅析python 的import 模块
- Python 被导入模块多次被加载的问题(基于python的import机制)
- python import自己编写的模块:import json和simplejson
- python的模块和包机制:import和from..import..
- python中import自己写的模块
- python的3种import模块方法
- Python import 其他文件夹下的模块
- python中import模块的方法
- python的import路径问题
- python的import路径问题
- python import模块方法
- python中import模块
- python import模块方法
- python import模块方法
- python import 模块
- python import模块方法
- MySQL单机多实例方案
- 3月14日整理
- nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in解决办法
- Android下屏保程序的开发
- 使用Aspose.Pdf在PDF文件中添加图片
- python: import模块的相关问题
- [笔记]:简单的globalmem字符设备驱动移植过程
- sql exists
- Nagle算法与CORK算法区别
- 头像图片显示---数据库中保存路径 图片上传到工作目录下
- JAVA乱码解决
- 设计模式之单一职责原则
- http发送流数据问题,可能的原因和解决办法
- 程序员如何做SOHO一族接私单做呢?