Python Setuptools 和 PBR - 如何使用 git 标签作为版本创建包发布?

Lig*_*tCC 6 python versioning git setuptools python-pbr

我如何实际创建使用 git repo 标签进行版本控制的 python 包的发布/发行版,使用setuptoolspbr

关于所需的基本设置和配置有很多信息:

但是关于如何实际创建发行版的简单信息在哪里?

即我正在寻找任何命令找到带有版本信息的 git 标记并将其拉入配置信息中,因此可以分发具有该新版本信息的源,并且可以使用类似的方法从脚本中发现版本信息在这个答案中描述。


额外细节

我正在开发一个项目,该项目将仅通过 git repo 分发给其他开发人员,而不是通过PyPi。该项目将使用 以可执行文件的形式发布给用户pyinstaller,因此此包分发仅用于几个关键目的:

  1. 为其他开发人员安装/设置包,以便可以干净地重新创建依赖项/环境。
  2. 管理版本——当前的计划是用于pbr从 Git 存储库标签生成版本,因此这些标签可以成为我们版本控制的真实来源
  3. 使用pbr其他自动生成从SVN家常的物品,如作者,manifest.in文件,发行票据等。

由于setuptools文档专注于使用PyPi和设置完全可分发和可重用的包pip,并且pbr文档只真正告诉您如何修改setuptools配置以使用pbr,因此我找不到有关如何运行分发/发布过程的信息。

我确定它存在于文档中的某个地方,但经过几次错误的启动后,我在这里问。我看到的每一个地方都暗示每个人要么知道如何做到这一点,要么作为过程的一部分神奇地发生。

我只是错过了显而易见的事情吗?


更新:

根据 sinoroc 的回答,看来我需要研究开发模式安装。即任何开发项目的人都会从git克隆,然后使用setuptools开发安装模式安装。

这不是原始问题的直接一部分,而是暗示的,我相信处于相同情况的人会感兴趣(我无法轻易找到信息)。

在他关于更新某些元数据的回答中提供了更多信息,并通过setuptools文档链接在“开发模式”下工作

sin*_*roc 3

简而言之:

  • python3 setup.py sdist
  • python3 setup.py bdist_wheel

如何使用 setuptools 和 pbr 实际上创建使用 git repo 标签进行版本控制的 python 包的发行版/发行版?

使用setuptools创建 Python 包(源和轮)发行版的常用命令是:python3 setup.py sdistpython3 setup.py bdist_wheel。默认情况下可以在目录中找到发行版dist

由于 setuptools 文档专注于使用 PyPi 和 pip 设置完全可分发和可重用的包,而 pbr 文档仅真正告诉您如何修改 setuptools 配置以使用 pbr,因此我找不到有关如何运行分发/发布的信息过程。

确实,setuptools没有记录这一点。它只记录了与 的差异distutils,这确实令人困惑。请参阅下面的实际文档...

但是有关如何实际创建发行版的简单信息在哪里?


更新

由于您不打算在诸如PyPI之类的索引上发布项目的发行版,并且您计划使用pyinstaller来代替,那么您确实很可能会忽略setuptools命令,例如sdistbdist_wheel

您仍然可能想了解开发阶段的这些命令:

  • 使用诸如python3 setup.py --version,之类的命令python3 setup.py --fullname来确定 setuptools(以及在您的情况下为 pbr)是否捕获了正确的信息。
  • 使用python3 setup.py develop(或) 在站点包pip install --editable .中放置一个伪链接 ( egg-link) ,指向您正在进行的工作。这样您的更改始终会被安装并可导入。重要提示:不要使用,这会将当前版本复制到站点包,并且更新的更改将无法导入。python3 setup.py install

现在我不知道一旦您转向pyinstaller ,这一切将如何工作。特别是因为您提到您希望可以从脚本中发现元信息(例如版本号)。setuptools 技术可能在pyinstallerpkg_resources上下文中起作用,也可能不起作用。