GVKun编程网logo

如何获取软件包中setup.py(setuptools)中定义的版本?(setup.py文件在哪里)

27

如果您对如何获取软件包中setup.py感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何获取软件包中setup.py的详细内容,我们还将为您解答setuptools中定义

如果您对如何获取软件包中setup.py感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何获取软件包中setup.py的详细内容,我们还将为您解答setuptools中定义的版本?的相关问题,并且为您提供关于ez_setup.py(setuptools安装工具easy_install)、inno-setup – 如何根据我的应用程序版本自动设置我的Inno Setup安装程序的版本?、Python Setuptools和PBR-如何使用git标签作为版本创建软件包发行版?、Python setuptools:软件包目录不存在的有价值信息。

本文目录一览:

如何获取软件包中setup.py(setuptools)中定义的版本?(setup.py文件在哪里)

如何获取软件包中setup.py(setuptools)中定义的版本?(setup.py文件在哪里)

如何setup.py从软件包中定义版本(出于--version或其他目的)?

答案1

小编典典

询问已安装发行版的版本字符串

要在运行时从程序包内部检索版本(您的问题似乎在问什么),可以使用:

import pkg_resources  # part of setuptoolsversion = pkg_resources.require("MyProject")[0].version

存储版本字符串以在安装期间使用

如果您想沿另一方向走动(这似乎是其他答案作者似乎认为您正在询问的问题),请将版本字符串放在单独的文件中,然后在中读取该文件的内容setup.py

您可以用__version__一行在软件包中创建一个version.py
,然后使用来从setup.py中读取它execfile(''mypackage/version.py''),以便__version__在setup.py命名空间中进行设置。

如果您想要一种更简单的方法来适用于所有Python版本,甚至可能需要访问版本字符串的非Python语言,请执行以下操作:

将版本字符串存储为纯文本文件(例如)的唯一内容VERSION,并在期间读取该文件setup.py

version_file = open(os.path.join(mypackage_root_dir, ''VERSION''))version = version_file.read().strip()

然后,同一个VERSION文件在任何其他程序(甚至是非Python程序)中也可以正常工作,并且您只需要在一个位置更改所有程序的版本字符串。

安装过程中有关种族状况的警告

顺便说一句,不要按照此处另一个答案的建议,从setup.py导入软件包:它似乎对您有用(因为您已经安装了软件包的依赖项),但是会对软件包的新用户造成严重破坏,因为如果不先手动安装依赖项,他们将无法安装您的软件包。

ez_setup.py(setuptools安装工具easy_install)

ez_setup.py(setuptools安装工具easy_install)

wget http://peak.telecommunity.com/dist/ez_setup.py

python ez_setup.py

安装完成后就可以用easy_install安装python的库了,比如:

easy_install pip

inno-setup – 如何根据我的应用程序版本自动设置我的Inno Setup安装程序的版本?

inno-setup – 如何根据我的应用程序版本自动设置我的Inno Setup安装程序的版本?

我使用Inno安装程序来生成我的应用程序的安装程序。如何设置Inno生成的setup.exe(VersionInfoVersion)的版本号与我的应用程序的版本号自动匹配?现在每次我部署我的应用程序的新版本,我需要手动更新版本号。

现在我做这个:

[Setup]
VersionInfoVersion=1.2.2.0 //writting the value manually

我想要这样的东西:

[Setup]
VersionInfoVersion={Get the version of my app}

解决方法

你可以像这样使用Inno Setup Preprocessor GetFiLeversion函数
#define ApplicationName 'Application Name'
#define ApplicationVersion GetFiLeversion('Application.exe')
[Setup]
AppName={#ApplicationName}
AppVerName={#ApplicationName} {#ApplicationVersion}
VersionInfoVersion={#ApplicationVersion}

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

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

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

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

  • SetupTools文档-setup()和setup.py配置
  • Python打包用户指南-安装软件包
  • PBR v3.1.1文档

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

即我正在寻找找到带有版本信息的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

答案1

小编典典

简而言之:

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

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

使用 setuptools 创建(使用源代码和滚轮)Python软件包的常用命令是:python3 setup.py sdistpython3setup.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 上下文中使用。

Python setuptools:软件包目录不存在

Python setuptools:软件包目录不存在

find_packages()自动生成软件包名称。也就是说,您的情况是生成['my_pkg']。它实际上并没有告诉setup()在哪里可以找到my_pkg,只是它应该期望在某个地方找到一个名为my_pkg的软件包。您必须单独告诉setup()应该在哪里寻找软件包。这是令人困惑和反直观的吗?是。无论如何,您可以使用setup()参数告诉my_pkg在哪里找到package_dir。例如。

package_dir={"":"src"}

我们今天的关于如何获取软件包中setup.pysetuptools中定义的版本?的分享已经告一段落,感谢您的关注,如果您想了解更多关于ez_setup.py(setuptools安装工具easy_install)、inno-setup – 如何根据我的应用程序版本自动设置我的Inno Setup安装程序的版本?、Python Setuptools和PBR-如何使用git标签作为版本创建软件包发行版?、Python setuptools:软件包目录不存在的相关信息,请在本站查询。

本文标签: