Python Distutils-SIG:任务和分工
Python Distutils-SIG
任务和分工
在第七届国际 Python 会议开发者日会议 “扩展构建被认为很痛苦” 上,我们列举了开发、分发和安装 Python 模块所需的任务;就概念化任何分发/安装系统所需的分工达成了大致共识;并提出了一个建议的用户界面。本文档描述了任务和分工;建议的用户界面在其他地方描述。
确定了三个角色:开发者、打包者和安装者(从某种意义上说,是系统的最终用户;我将坚持使用“安装者”,因为他不是唯一的用户)。显然,这些角色存在重叠;有些任务必须由开发者和打包者共同完成,有些任务必须由三者共同完成等。我将尝试将每个任务与一个“主要”角色关联起来,并在其他角色也出现时再次提及。
开发者任务
开发者的主要任务是
- 开发
- 编写和维护模块
- 文档
- 编写模块文档(请注意,以标准方式记录 Python 模块的问题不在 Distutils-SIG 的权限范围内;但是,如果出现这种标准方式,我们应该尽力支持它,例如提供与标准文档处理工具的简单接口)
- 提供测试套件
- 编写测试(理论上)模块每个部分的代码,并以标准方式报告成功或失败(distutils 的作用是提供一个标准接口来运行测试套件并解释其结果)
- 提供安装工具
- 目前耗时、容易出错,而且非常繁琐(并且开发者之间的做法不一致):Distutils-SIG 存在要解决的问题!distutils 应该是那个安装工具;开发者通常只需要提供一些信息来帮助 distutils 完成它们的工作
- 创建源分发
- 不仅仅是 tar 打包源代码树的一个子集,但是——考虑到 distutils 将拥有诸如名称、版本号等信息——在它的帮助下可以变得微不足道
打包者任务
- 创建构建分发
- 确实是打包者存在的唯一原因:这包括下载源分发,构建模块,并从构建结果创建一个新的可下载资源
安装者任务
- 构建
- 将源文件转换为准备安装的形式。这最终可能涉及以下内容
- 将
.py
文件复制到模拟安装树中 - 将
.py
文件编译为.pyc
和.pyo
形式 - 编译并链接 C 扩展,将共享对象放入模拟安装树中
- 处理文档(例如,为 Unix 手册页创建 *roff 文件,为 GNU info 系统创建 info 文件,以及/或者为方便 Web 使用的文档创建 HTML 文件)
- 将
- 测试
- 运行开发者提供的测试套件,并确保模块通过所有测试
- 安装
- 将模拟安装树复制到现有的 Python 库树中(不一定是系统 Python 库——可以在用户的 home 目录或临时目录中)
.tar
或 .zip
文件)?安装构建分发时是否应该运行测试套件,如果应该,如何运行?