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