PBR 增强以支持 pip

pip,Python 包安装工具,正在寻找非常类似于 pbr 的东西。pbr 本身将受益于 pip 正在寻找的通用化。

问题描述

目前 pbr 在某些地方不满足 pip 的需求。

  1. pbr 要求在从 git 和 tarball 安装时,pbr 易于安装或预先安装。这种方式过于脆弱,pip 希望避免在从 tarball 的情况下出现这种情况。OpenStack 用户已经向 pbr 提出了这个要求。

  2. pbr 没有关闭 requirements.txt 反射的方法。这已经在与上游实践融合的过程中计划中。

  3. 需要能够根据安装到的 Python 环境生成动态入口点。例如,foo、foo2、foo2.7,在安装到 Python 2.7 时,无论是全局安装还是 venv。

提议的变更

将 pbr 嵌入到 sdists 中

通过选择加入的选项,我们可以将 pbr 嵌入到 sdist 的根目录中。当从 sdist 运行时,本地目录将首先出现在 Python 路径中,这将导致嵌入的 pbr 副本被找到并加载。嵌入过程将复制静态定义的 pbr 源代码子集(我们可能希望稍作重构以使其更易于管理)。pbr 的非测试代码目前未压缩时为 128K,压缩后为 30K - 这是可以接受的。嵌入所有 pbr 允许测试、文档构建等都从 sdist 中正常工作。

选择退出 requirements.txt 反射

我们将添加一个选项,skip_requirements_files,以禁用 requirements 文件反射。设置后,requirements 将仅通过 setup.cfgsetup.py 进行管理。这与我们最终弃用这些文件的目标一致。

入口点合并

与其引入 wheels 不支持的模板语言,不如允许 setup() 传入入口点并合并它们。这将防止这在 OpenStack 中成为一个令人讨厌的问题,同时仍然允许 pip 执行其当前针对更广泛工具集中缺乏入口点模板化的解决方法。

备选方案

  1. 对 pip 说“不,这不是 pbr”。不必要。发展生态系统是 OpenStack 的使命的一部分。

实现

负责人

主要负责人/联系人

Robert Collins - lifeless

工作项

  1. 将 pbr 嵌入到 sdists 中。

  2. 选择退出 requirements 反射。

依赖项

历史

修订版

发布名称

描述

Mitaka

引入

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode