# 28.1. `distutils` — 构建和安装 Python 模块

`distutils` 包为将待构建和安装的额外的模块，打包成 Python 安装包提供支持。新模块既可以是百分百的纯 Python，也可以是用 C 写的扩展模块，或者可以是一组包含了同时用 Python 和 C 编码的 Python 包。

大多数 Python 用户 不会 想要直接使用这个包，而是使用 Python 包官方维护的跨版本工具。特别地， setuptools 是一个对于提供的 `distutils` 的增强选项。

- 对声明项目依赖的支持。

- 额外的用于配置哪些文件包含在源代码发布中的装置（包括与版本控制系统集成需要的插件）

- 生成项目“进入点”的能力，进入点可用作应用插件系统的基础

- 自动在安装时间生成 Windows 命令行可执行文件的能力，而不是需要预编译它们

- 跨所有受支持的 Python 版本上的一致的表现

推荐的 pip 安装器用 `setuptools` 运行所有的 `setup.py` 脚本，即使脚本本身只引了 `distutils` 包。参考 Python Packaging User Guide 获得更多信息。

为了打包工具的作者和用户能更好理解当前的打包和分发系统，遗留的基于 `distutils` 的用户文档和 API 参考保持可用：

- 安装Python模块（旧版）

- 分发 Python 模块（遗留版本）