小编典典

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

python

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


阅读 259

收藏
2020-12-20

共1个答案

小编典典

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

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

import pkg_resources  # part of setuptools
version = 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导入软件包:它似乎对您有用(因为您已经安装了软件包的依赖项),但是会对软件包的新用户造成严重破坏,因为如果不先手动安装依赖项,他们将无法安装您的软件包。

2020-12-20