当前位置: 首页 > 面试题库 >

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

陆宏扬
2023-03-14
问题内容

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

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

  • SetupTools文档-setup()和setup.py配置
  • Python打包用户指南-安装软件包
  • PBR v3.1.1文档
  • StackOverflow:如何使用通过setuptools和生成的版本信息pbr

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

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

额外细节

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

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

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

我确定它存在于文档中的某个位置,但是在几次错误的开始之后,我要在这里询问。在我看来,到处都有暗示,每个人要么知道如何做到这一点,要么就神奇地发生在过程的一部分中。

我只是想念明显的东西吗?

更新:

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

这不是原始问题的直接一部分,而是隐含的,我相信同样情况下的人们也会对此感兴趣(我无法轻易找到的信息)。

有关他的更新某些元数据以及通过此文档链接可以在“开发模式”下工作的更多信息,请参见他的回答。setuptools


问题答案:

简而言之:

  • 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,确实令人困惑。请参阅下面的实际文档…

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

  • https://packaging.python.org/tutorials/packaging-projects/#generating-distribution-archives
  • https://docs.python.org/3/distutils/sourcedist.html
  • https://docs.python.org/3/distutils/builtdist.html

更新资料

由于您不打算在索引(例如 PyPI) 上发布项目的发行版,而是计划使用 pyinstaller ,因此您实际上很可能会忽略诸如和的
setuptools 命令。sdist``bdist_wheel

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

  • 使用命令,如python3 setup.py --versionpython3 setup.py --fullname以找出是否setuptools的(和你的情况PBR)正赶上正确的信息。
  • 使用python3 setup.py develop(或pip install --editable .)将伪链接(egg-link)放在指向您正在进行的工作的 站点包 中。这样,您的更改始终可以 安装 并导入。重要提示:请勿使用python3 setup.py install,这会将当前版本复制到 站点程序包中, 而较新的更改将无法导入。

现在,我不知道一旦转到 pyinstaller, 所有这些将如何工作。特别是因为您提到过要从脚本中发现 元信息 (例如版本号)。使用
setuptools 的技术pkg_resources可能无法在 pyinstaller 上下文中使用。



 类似资料:
  • 我想让我的Gradle构建使用Gradle创建一个发行版签名的apk文件。 我不确定代码是正确的,还是在执行时缺少了一个参数? 这是我的gradle文件中的一些代码: gradle构建成功完成,在我的文件夹中,我只看到和文件。 对如何解决这个问题有什么建议吗?

  • Git 可以给历史中的某一个修订版本打上标签,通常我们会使用标签来表示一个版本的发布. 操作步骤: VCS —> Git —>Tag —>弹出创建标签配置窗口 配置介绍: Git Root: 项目地址 Current Branch: 显示当前的分支 Tag Name: 标签名 Force:如果相同的tag名已经存在了,是否强制创建. Commit: 通过输入的修订版本号、tag名来打标签,如果空白

  • 问题内容: 我正在尝试使用Maven版本插件2.0标记版本,并希望将生成的jar部署到存储库。 我被困住了,得到这个神秘的错误: 标签文件夹确实存在并且为空 我执行了命令以确保重新运行 每次遇到错误时,我都会执行以使一切恢复正常 看来这不是一个凭证问题,pom文件已被有效删除,并且scm信息已切换到tag文件夹。 奇怪的是,我不了解如何提交pom文件,因为我既未在pom中也未在maven本地安装中

  • 本文向大家介绍如何使用JavaFX创建标签?,包括了如何使用JavaFX创建标签?的使用技巧和注意事项,需要的朋友参考一下 现场演示 -> 输出结果

  • 我正在使用JGit克隆存储库,对文件进行一些更改,提交,标记它,然后将其推送到远程存储库。 我已经使用JGit编写了代码,它将克隆存储库,在文件中进行一些更改,然后提交更改,创建新标记,并推送提交和标记。 推送后,我希望远程存储库显示我的更改和新标签,但是在远程存储库中显示的是带有提交的更改,但是标签不可见。它显示“无标签”。

  • 我想将以新的swift包管理器格式编写的swift代码编译成高度优化的二进制代码。这在当前使用swiftc-O somefile时是可能的。swift