Python 打包辅助神器 PBR 是什么?详解

pbr 是 setuptools 的辅助工具,最初是为 OpenStack 开发(https://launchpad.net/pbr),基于`d2to1`。

pbr 会读取和过滤setup.cfg中的数据,然后将解析后的数据提供给 setup.py 作为参数。包含如下功能:

  1. 从git中获取Version、AUTHORS and ChangeLog信息
  2. Sphinx Autodoc。pbr 会扫描project,找到所有模块,生成stub files
  3. 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/

  1. 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 的方法

教程来源于Github,感谢iswbm大佬的无私奉献,致敬!

技术教程推荐

持续交付36讲 -〔王潇俊〕

Kafka核心技术与实战 -〔胡夕〕

人人都能学会的编程入门课 -〔胡光〕

Web安全攻防实战 -〔王昊天〕

深度学习推荐系统实战 -〔王喆〕

React Hooks 核心原理与实战 -〔王沛〕

搞定音频技术 -〔冯建元 〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

结构写作力 -〔李忠秋〕