20.1. 模块和扩展包

Python 的主要扩展机制为使用保存到模块中的源代码,并通过 import 语句应用到程序中。 大多数开发人员认为属于「 Python 」的功能,实际上是作为标准库的模块集合实现的,这是也本书的主题。 虽然导入功能内置于解释器本身,但库中有几个与导入过程相关的模块。

importlib 模块公开了解释器所使用导入机制的底层实现。 它可用于在运行时动态地导入模块,而不是在启动期间使用 import 语句加载它们。 当事先不知道需要导入的模块的名称时,动态加载模块很有用,例如插件或应用程序的扩展。

Python 的包可以包含 Python 源代码,同时也可以包含其他辅助资源文件,例如模板、默认配置和图片。pkgutil 模块实现了一种便捷地访问资源文件的接口。它还可以修改包的导入路径,可以使内容安装到多个目录中,但作为同一个包的一部分出现。

zipimport 提供了一个特殊的导入器,以便我们直接从 Zip 文件中导入模块和包。例如,可以用它来加载 Python EGG 文件,同时也可以将它作为一种便捷的打包和分发应用的方式。