8.16 【进阶】打包辅助神器 PBR 是什么?¶
pbr
是 setuptools 的辅助工具,最初是为 OpenStack
开发(https://launchpad.net/pbr),基于d2to1
。
pbr
会读取和过滤setup.cfg中的数据,然后将解析后的数据提供给
setup.py
作为参数。包含如下功能:
从git中获取Version、AUTHORS and ChangeLog信息
Sphinx Autodoc。pbr 会扫描project,找到所有模块,生成stub files
Requirements。pbr会读取requirements.txt,生成setup函数需要的
install_requires/tests_require/dependency_links
这里需要注意,在 requirements.txt
文件的头部可以使用:--index https://pypi.python.org/simple/
,这一行把一个抽象的依赖声明如
requests==1.2.0 转变为一个具体的依赖声明 requests 1.2.0 from
pypi.python.org/simple/
long_description。从README.rst, README.txt or README file中生成
long_description
参数
使用pbr很简单:
from setuptools import setup
setup(
setup_requires=['pbr'],
pbr=True,
)
使用pbr时,setup.cfg中有一些配置。在[files]中,有三个key:
packages
:指定需要包含的包,行为类似于setuptools.find_packages
namespace_packages
:指定namespace packages data_files
:
指定目的目录和源文件路径,一个示例:
[files]
data_files =
etc/pbr = etc/pbr/*
etc/neutron =
etc/api-paste.ini
etc/dhcp-agent.ini
etc/init.d = neutron.init
[entry_points]
段跟 setuptools 的方式相同。
到此,我讲了三种编写使用 setup.py 的方法
使用命令行参数指定,一个一个将参数传递进去(极不推荐)
在 setup.py 中的setup函数中指定(推荐使用)
使用 pbr ,在 setup.cfg 中指定(易于管理,更推荐)