4.2 使用pbr打包

现在我已经用了好几页让你对如此多的分发工具更加迷糊,接下来让我们谈谈另一个工具,也是一个不同的选择,名为pbr。

你可能已经开发过一些包并试图去写setup.py,或者从其他项目复制一个,或者自己啃文档。这不是一个清晰明确的任务,如同我们在前面讨论过的,选择什么工具通常是第一个障碍。本节将介绍pbr,一个应该用来开发你的下一个setup.py的工具,以便你不用再在这部分浪费时间。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

pbr是指Python Build Reasonableness。这个项目已经在OpenStack(http://openstack.org)内部启动,并围绕setuptools开发了一系列用来辅助包的安装和部署的工具。它从distutils2获得了灵感,利用setup.cfg文件来描述包的用途。

pbr使用的setup.py文件类似下面这样:

import setuptools

setuptools.setup(setup_requires=['pbr'], pbr=True)

就两行代码,非常简单。实际上安装所需要的元数据存储在setup.cfg文件中:

[metadata]
name = foobar
author = Dave Null
author-email = foobar@example.org
summary = Package doing nifty stuff
license = MIT
description-file =
  README.rst
home-page = http://pypi.python.org/pypi/foobar
requires-python = >=2.6
classifier =
  Development Status :: 4 - Beta
  Environment :: Console
  Intended Audience :: Developers
  Intended Audience :: Information Technology
  License :: OSI Approved :: Apache Software License
  Operating System :: OS Independent
  Programming Language :: Python

[files]
packages =
  foobar

看着眼熟?没错,处理的方式都是直接受distutils2的启发。

pbr还提供了其他一些功能,例如:

 
  • 基于requirements.txt做自动依赖安装;
  • 利用Sphinx实现文档自动化;
  • 基于git history自动生成AUTHORSChangeLog文件;
  • 针对git自动创建文件列表;
  • 基于git tags的版本管理。

所有这些对开发人员来说只有一点儿或完全没有任何额外工作要做。pbr目前维护良好并且开发很活跃,所以如果计划分发软件的话,应该认真考虑一下使用pbr。