问题标签 [python-pbr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何告诉 setuptools 悄悄地安装需求?
有没有办法告诉带有PBRrequirements.txt
的 setuptools来安静地安装软件包test-requirements.txt
?
使用此命令:
我收到来自 的所有消息pip
,我想避免这些消息。
我setup.py
的是:
并setup.cfg
包含(除了metadata
):
我要实现的是配置setuptools/PBR,这样效果和运行一样:
但没有打电话pip install --quiet
。
python - 如何使用 pbr 设置 python 包的生产版本
对于我的包裹,我有以下setup.py
当我运行时python setup.py sdist
,被标记到 tar 文件的版本是module-0.0.1.dev1207
. 如果我修改setup.cfg
为具有以下条目
被标记到 tar 文件的版本是-1.0.1.dev1207
.
我做了一些阅读pbr
,发现它使用 git 提交和标签来创建它的版本控制。
在他们的文件中,它指出
可以通过两种方式管理版本 - postversioning 和 preversioning。Postversioning 是默认设置,通过在 setup.cfg 元数据部分中设置 version 来启用 preversioning。在这两种情况下,版本字符串都是从 git 推断出来的。
如果标记了当前签出的修订,则使用该标记作为版本。
如果当前签出的修订没有标记,那么我们取最后一个标记的版本号并增加它以获得最小目标版本。
然后我们将 git history 带回到上一个版本。在每次提交中,我们都会查找 Sem-Ver: 伪标头,如果找到,则对其进行解析以查找关键字。未知符号不是错误(因此人们不能楔入 pbr 或破坏他们的树),但我们会发出信息级别的警告消息。已知符号:功能、api-break、弃用、错误修复。缺少的 Sem-Ver 行等同于 Sem-Ver:错误修复。错误修正符号会导致版本的补丁级别增加。功能和弃用符号会导致次要版本增加。api-break 符号导致主要版本增量。
如果正在使用 postversioning,我们使用生成的版本号作为目标版本。
如果正在使用 preversioning,我们会检查 setup.cfg 的元数据部分中设置的版本是否大于我们使用上述方法推断的版本。如果推断的版本大于 preversioning 值,我们会引发错误,否则我们使用 setup.cfg 中的版本作为目标。
然后,我们根据自上次发布以来的提交生成开发版本字符串,并包含当前的 git sha 以消除自发布以来具有相同提交数量的多个开发版本。
但这让我不确定以下问题:
- 如何启用预版本?
- 如果因为 pbr 似乎说至少其中一个是 pbr 正常工作所必需的,那么如果没有标签或在 repo 中怎么办?
- 如何删除
dev1207
我的版本的一部分? - 如何设置
setup.cfg
从我的版本读取版本,main.py
而不是我必须在setup.cfg
文件中指定它?
python - Python Setuptools 和 PBR - 如何使用 git 标签作为版本创建包发布?
我如何实际创建一个使用 git repo 标签进行版本控制的 python 包的发布/发行版,使用setuptools
and pbr
?
有大量关于所需基本设置和配置的信息:
- SetupTools 文档 - setup() 和 setup.py 配置
- Python 打包用户指南 - 安装包
- PBR v3.1.1 文档
- StackOverflow:如何使用使用
setuptools
和生成的版本信息pbr
但是关于如何实际创建发行版的简单信息在哪里?
即我正在寻找任何命令找到带有版本信息的git标签并将其拉入配置信息中,因此可以分发具有该新版本信息的源,并且可以从脚本中发现版本信息,使用类似的方法在这个答案中描述。
额外细节
我正在开发一个项目,该项目将仅通过 git repo 分发给其他开发人员,而不是通过PyPi。该项目将作为可执行文件使用 发布给用户pyinstaller
,因此此软件包分发仅用于几个关键目的:
- 为其他开发人员安装/设置包,以便可以干净地重新创建依赖项/环境。
- 管理版本控制 - 当前计划是用于
pbr
从 Git 存储库标签生成版本,因此这些标签可以成为我们版本控制的真实来源 - 用于
pbr
从 Git 自动生成普通项目,例如作者、manifest.in 文件、发行说明等。
由于文档专注于使用PyPi和setuptools
设置一个完全可分发和可重用的包,并且文档只真正告诉您如何修改配置以使用,我找不到有关如何运行分发/发布过程的信息。pip
pbr
setuptools
pbr
我确定它存在于文档中的某个地方,但是在几次错误的开始之后我在这里问。我所看到的任何地方都暗示每个人都知道如何做到这一点,或者它只是作为过程的一部分神奇地发生。
我只是错过了显而易见的事情吗?
更新:
根据 sinoroc 的回答,看来我需要研究开发模式安装。即任何开发项目的人都将从git克隆,然后通过使用setuptools
开发安装模式进行安装。
这不是原始问题的直接一部分,而是暗示的,我相信处于相同情况的人会感兴趣(我无法轻易找到的信息)。
更多信息可在他关于更新一些元数据的回答中获得,并通过此setuptools
文档链接在“开发模式”下工作
python - 如何使用 Setuptools 和 PBR 更新 Python 包中的 git 元数据
使用从 git repo 标签生成的版本pbr
我在从我的包中获取版本信息时遇到问题,该包设置为setuptools
与pbr
扩展一起使用的普通 Python 包。pbr
将从 git repo 中的标签中提取版本信息,因此有一个单一的事实来源。
我确实掌握了基础知识 -请参阅此问答了解更多信息。
如果我完整分发软件包,它总体上是有效的。例如:py setup.py sdist
将创建一个完整的发行版,并更新来自 git 的版本标签和其他元数据。
但是我不需要这个包的完整发行版,我的团队只是在本地从一个 git repo 中处理它。我还pyinstaller
用于创建用于用户分发的主脚本的可执行文件(不需要 Python)。所以我想要一个简单、快速的命令,它只会根据 git 存储库的最新更新来更新元数据,而无需花费额外的时间让 SetupTools 构建和创建完整的分发包,无论如何都不会使用它。
pbr
将从 repo 中提取版本(来自标签)、作者和更改日志信息,因此可以节省大量时间,使我们可以将大部分元数据直接保存在 git 中。
问题
我们可以做些什么来更新包元数据pbr
而不进行完整分发?
特别是在版本上:
- 何时或使用哪些命令将
setup.py
使用pbr
扩展实际从 git repo 更新版本,以便任何查询版本的命令都将获得更新的版本? - 此设置中实际存储的版本在哪里?(我找不到……)
更多信息和一些代码
我有一个很短的setup.py
,用于pbr
扩展:
现在,如果我使用标签更新 git repo 中的最新提交,该命令py setup.py --version
将返回基于该标签的新更新版本,但我能找到的任何其他直接方法仍将返回旧版本字符串。因此,该命令似乎不会将新版本字符串存储在任何地方。
这是我从我的包中尝试过的一些方法__init__.py
:
以上所有内容都返回旧版本字符串(上次进行完整分发)。
那么,有没有什么我可以做的py setup.py sdist
或者类似的完整分发构建命令(bdist、bdist_egg 等)来简单地更新我的包信息,所以上述方法会给我最新的版本字符串和其他 git 元数据。主包脚本运行?
这将允许我们在签出新提交后作为开发人员在本地更新包,然后运行pyinstaller
以创建我们的 exe 并发布我们的最终用户版本的脚本。
python - pbr 对于 Python 库的正确用法是什么?
许多项目使用 pbr 来自动跟踪更改和递增版本。我也是。我的项目是一个图书馆。(为了完整性,它是 Sphinx 扩展sphinxcontrib.constdata。)
我是否正确理解我的库也需要 pbr 作为 install_requires 依赖项?
但这意味着 lib 的所有用户也需要安装 pbr。这不是严重的设计缺陷吗?pbr 应该是构建时依赖项,而不是运行时依赖项,并且不仅仅是使用 lib 所必需的。
pbr 对于 Python 库的正确用法是什么?
此外,启用扩展会导致 sphinx-build 崩溃
pkg_resources.DistributionNotFound:未找到“sphinxcontrib.constdata”分布,应用程序需要该分布
和
例外:此项目的版本控制需要 sdist tarball,或访问上游 git 存储库。setup.cfg 中的包名称与提供给 pbr.version.VersionInfo 的参数之间也可能存在不匹配。项目名称 sphinxcontrib.constdata 已给出,但无法找到。
例外。