8.12 【基础】分发工具:distutils和setuptools ============================================ 1. 包分发的始祖:distutils -------------------------- ``distutils`` 是 Python 的一个标准库,从命名上很容易看出它是一个分发(distribute)工具(utlis),它是 Python 官方开发的一个分发打包工具,所有后续的打包工具,全部都是基于它进行开发的。 ``distutils`` 的精髓在于编写 setup.py,它是模块分发与安装的指导文件。 那么如何编写 setup.py 呢?这里面的内容非常多,我会在后面进行详细的解析,请你耐心往下看。 你有可能没写过 setup.py ,但你绝对使用过 setup.py 来做一些事情,比如下面这条命令,我们经常用它来进行模块的安装。 .. code:: shell $ python setup.py install 这样的安装方法是通过源码安装,与之对应的是通过二进制软件包的安装,同样我也会在后面进行介绍。 2. 分发工具升级:setuptools --------------------------- ``setuptools`` 是 distutils 增强版,不包括在标准库中。其扩展了很多功能,能够帮助开发者更好的创建和分发 Python 包。大部分 Python 用户都会使用更先进的 setuptools 模块。 **distribute**\ ,或许你在其他地方也见过它,这里也提一下。 distribute 是 setuptools 有一个分支版本,分支的原因可能是有一部分开发者认为 setuptools 开发太慢了。但现在,distribute 又合并回了 setuptools 中。因此,我们可以认为它们是同一个东西。 还有一个大包分发工具是 **distutils2**\ ,其试图尝试充分利用distutils,detuptools 和 distribute 并成为 Python 标准库中的标准工具。但该计划并没有达到预期的目的,且已经是一个废弃的项目。 因此,setuptools 是一个优秀的,可靠的 Python 包安装与分发工具。 那么如何在一个干净的环境中安装 setuptools 呢? 主要有两种方法: - 源码安装:在 https://pypi.org/project/setuptools/#files 中下载 zip 包 解压执行 ``python setup.py install`` 安装 - 通过引导程序安装:下载引导程序,它可以用来下载或者更新最新版本的 setuptools .. code:: shell $ wget http://peak.telecommunity.com/dist/ez_setup.py # 安装 $ python ez_setup.py # 更新,以下两种任选 $ python ez_setup.py –U setuptools $ pip install -U setuptools