如何setup.py从软件包中定义版本(出于--version或其他目的)?
setup.py
--version
要在运行时从程序包内部检索版本(您的问题似乎在问什么),可以使用:
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命名空间中进行设置。
__version__
execfile('mypackage/version.py')
如果您想要一种更简单的方法来适用于所有Python版本,甚至可能需要访问版本字符串的非Python语言,请执行以下操作:
将版本字符串存储为纯文本文件(例如)的唯一内容VERSION,并在期间读取该文件setup.py。
VERSION
version_file = open(os.path.join(mypackage_root_dir, 'VERSION')) version = version_file.read().strip()
然后,同一个VERSION文件在任何其他程序(甚至是非Python程序)中也可以正常工作,并且您只需要在一个位置更改所有程序的版本字符串。
顺便说一句,不要按照此处另一个答案的建议,从setup.py导入软件包:它似乎对您有用(因为您已经安装了软件包的依赖项),但是会对软件包的新用户造成严重破坏,因为如果不先手动安装依赖项,他们将无法安装您的软件包。