1.直接导入大家熟知的方法,import>>>importos>>>os.getcwd()'/home/wangbm'和这个类似,import...import...as就不再赘述了...from...import...from...import...as...一般情况下,使用import语句导入模块即可。但在某些特殊场景下,可能需要采用其他导入方式。下面我就为大家一一介绍。2.使用__import____import__函数可以用来导入模块,import语句也会调用该函数。它的定义是:__import__(name[,globals[,locals[,fromlist[,level]]]])参数介绍:name(必填):加载模块的名称globals(可选):包含全局变量的字典,thisoption很少使用,使用默认值global()locals(可选):包含局部变量的字典,在内部标准实现中没有使用,使用默认值-local()fromlist(可选):导入的名称submodulelevel(Optional):导入路径选项,Python2默认为-1,表示同时支持绝对导入和相对导入。在Python3中默认为0,这意味着只支持绝对导入。如果大于0,则表示相对于导入的父目录的级别,即1就像'.'2就像'..'。使用示例如下:>>>os=__import__('os')>>>os.getcwd()'/home/wangbm'如果要达到importxxasyy的效果,修改左边的值即可如下例,相当于Forimportosasmyos:>>>myos=__import__('os')>>>myos.getcwd()'/home/wangbm'3.使用importlibimportlib是Python中的标准库,而importlib可以提供非常全面的功能。它的简单例子:>>>importimportlib>>>myos=importlib.import_module("os")>>>myos.getcwd()'/home/wangbm'如果想达到importxxasyy的效果,可以dothis>>>importimportlib>>>>>>myos=importlib.import_module("os")>>>myos.getcwd()'/home/wangbm'4.使用imimp模块提供了一些在import语句中实现的接口.例如模块搜索(find_module)、模块加载(load_module)等(一个模块的导入过程会包括模块搜索、加载、缓存等步骤)。您可以使用此模块简单地实现内置的__import__功能:>>>importimp>>>file,pathname,desc=imp.find_module('os')>>>myos=imp.load_module('sep',file,pathname,desc)>>>myos>>>>myos.getcwd()'/home/wangbm'frompython3,inside内置的重新加载功能已移至imp模块。从Python3.4开始,imp模块已被弃用,不再推荐,它包含的功能已移至importlib模块。即从Python3.4开始,importlib模块是之前imp模块和importlib模块的集合。5.使用execfile在Python2中有一个execfile函数,可以用来执行一个文件。语法如下:execfile(filename[,globals[,locals]])有几个参数:filename:文件名。globals:变量作用域,全局命名空间,如果提供,必须是一个字典对象。locals:变量范围,局部命名空间,如果提供,可以是任何映射对象。>>>execfile("/usr/lib64/python2.7/os.py")>>>>>>getcwd()'/home/wangbm'6、使用execexecfile只能在Python2、Python3.x中使用此功能已被删除。但是原理还是值得学习的,可以使用open...read读取文件内容,然后使用exec执行模块。示例如下:>>>withopen("/usr/lib64/python2.7/os.py","r")asf:...exec(f.read())...>>>getcwd()'/home/wangbm'7.import_from_github_com有一个包叫import_from_github_com,从名字就很容易知道,它是一个可以从github上下载、安装和导入的包。为了使用它,您需要做的就是首先使用pip安装它,如下所示。$python3-mpipinstallimport_from_github_com此包使用PEP302中的新导入挂钩,允许您从github导入包。这个包实际上所做的就是安装包并在本地添加它。你需要Python3.2或更高版本,并且安装了git和pip才能使用这个包。确保pip是较新的版本,如果不是,请执行以下命令升级。$python3-mpipinstall--upgradepip确保环境没问题后,就可以在Pythonshell中使用import_from_github_com了。示例如下>>>fromgithub_com.zzzeekimportsqlalchemyCollectinggit+https://github.com/zzzeek/sqlalchemyCloninghttps://github.com/zzzeek/sqlalchemyto/tmp/pip-acfv7t06-buildInstallingcollectedpackages:SQLAlchemyRunningsetup.pyinstallforSQLAlchemy...done成功安装SQLAlchemy-1.1.0b1.dev0>>>locals(){'__builtins__':,'__spec__':无,'__package__':无,'__doc__':无,'__name__':'__main__','sqlalchemy':,'__loader__':}>>>看了import_from_github_com的源码,你会发现它并没有使用importlib。其实它的原理就是用pip安装那些没有安装的包,然后用Python的__import__()函数引入新安装的模块。8、远程导入模块这篇文章(深入探讨Python的导入机制:实现远程导入模块),深入分析了导入模块的内部原理,最后手动从远程服务器读取模块内容,以及导入器在本地成功导入模块。具体内容很多,可以点此链接深入学习。示例代码如下:#新建一个py文件(my_importer.py),内容如下fullname,path=None):ifpathisNone:baseurl=self._baseurlelse:#如果url不是原来定义的,不存在则直接返回ifnotpath.startswith(self._baseurl):returnNonebaseurl=pathtry:loader=UrlMetaLoader(baseurl)returnloaderexceptException:returnNoneclassUrlMetaLoader(importlib.abc.SourceLoader):def__init__(self,baseurl):self.baseurl=baseurldefget_code(self,fullname):f=urllib2.urlopen(self.get_filename(fullname))returnf.read()defget_data(self):passdefget_filename(self,fullname):returnsself.baseurl+fullname+'.py'definstall_meta(address):finder=UrlMetaFinder(address)sys.meta_path.append(finder)并在远程服务器上开启http服务(为了方便,我只在本地演示)和manuallyeditaname是my_info的python文件,如果后面导入成功,会打印ok。$mkdirhttpserver&&cdhttpserver$cat>my_info.py>>frommy_importerimportinstall_meta>>>install_meta('http://localhost:12800/')#注册finder到sys.meta_path>>>importmy_info#打印ok,说明导入成功ok>>>my_info.name#Verification可以得到变量'wangbm'就好了,8个方法已经介绍给大家了。对于普通开发者来说,掌握import的方法就足够了。对于那些想开发自己的框架的人,深入学习__import__。并且importlib是非常必要的。