1.imp模块提供了一个可以实现import语句的接口。
使用imp可以用来导入模块和类。
imp.PY_SOURCE —-1
imp.PY_COMPILED——2
imp.C_EXTENSION——3
imp.get_suffixes()
返回一个列表,列表的元素是三元素元组。
2.imp.find_module(name[,path])
如果path为空,则按照sys.path路径搜索模块名, 返回三元组(file, pathname, description).file为刚打开的模块文件, pathname为模块的路径, description为imp.get_suffixes()返回的元组.
如果模块为包,file返回None, pathname为包路径, description返回的type为PKG_DIRECTORY.
find_module不会处理层次结构的模块名(带’.’号的模块名module.name1.name2).
“path”必须是一个列表.
3.imp.load_module(name, file, pathname, description)
加载一个被find_module找到的模块. 如果模块已经被加载, 等同于reload().
当模块是包或者不从文件加载时, file和pathname可以是None和”.
成功加载后返回一个模块对象,否则抛出 ImportError异常.
需要自己关闭file,最好用try…finally…
4.imp.load_source(name,pathname[,file])的作用把源文件pathname导入到name模块中,name可以是自定义的名字或者内置的模块名称。
假设在路径E:/Code/Python3/下有一个文件test.py, 内容如下:
def myadd(x, y):
return(x + y)
使用方法如下:
import imp
m = imp.load_source('mymod', 'E:/Code/Python3/test.py')
# 方法一
a = m.myadd(4, 10)
print(a)
# 方法二
import mymod
a = mymod.myadd(4, 10)
print(a)