打包和发布是 python 的重要功能,其实方便快捷的打包发布方式也是 python 为什么能这么流行的原因。

相对于 Java 有 jar 包或者 war 包作为打包分发格式,Python 的软件包一开始是没有官方的标准分发格式的。后来不同的工具都开始引入一些比较通用的格式。比如,setuptools 引入了 Egg 格式。但是,这些都不是官方支持的,存在元数据和包结构彼此不兼容的问题。因此,为了解决这个问题, PEP 427 定义了新的分发包标准,名为 Wheel [目前 pip 和 setuptools 工具都支持 Wheel 格式进行安装]。可以通过命令 Python setup.py bdist_wheelsetup.py是一个定义了很多元数据的 python 脚本。目前是标准也是主流,所以推荐使用 wheel 包进行打包和分发。

如果你到系统中安装 Python 库的路径下看,能看到很多名称以.egg-info 或者以.dist-info 结尾的目录。这些目录的内容就是这个库的元数据,是从库的分发包中拷贝出来的。其中.egg-info 类型的目录来自于 Egg 格式的分发包,.dist-info 类型的目录来自于 Wheel 格式的分发包

Python 的打包和发布方式,提供了另一种在开发阶段的 Python 包引用。传统的方式,通过添加__init__.py将一个文件夹转化为 Python 包,但是在平级引用这个包,也就是说,只有和这个包的文件夹平级的文件才可以引用。现在通过打包和发布,安装这个 Python 的程序,这样可以自由引用。