<p>考虑一下<a href="https://github.com/pypa/setuptools_scm" rel="nofollow noreferrer">setuptools_scm</a>,它在可用时从git或hg标记中提取一个版本,或者生成一个适当的开发版本(例如,<code>hgvs-1.2.5.dev6+hb5d989061852.d20181124</code>)。该版本与硬编码版本一样写入包元数据。不需要非标准的运行时支持。在</p>
<p>虽然我在许多项目中使用过setuptools\u scm,但我没有使用PBR。我很好奇,做了一个简单的演示:</p>
<pre><code>snafu$ head setup.py setup.cfg pbrversiontest/*.py
==> setup.py <==
from setuptools import setup
setup(
setup_requires=[
"pbr",
"setuptools_scm"
],
pbr=True,
use_scm_version=True,
)
==> setup.cfg <==
[metadata]
name = pbrversiontest
summary = test whether we can use pbr and setuptools_scm
[files]
packages =
pbrversiontest
==> pbrversiontest/__init__.py <==
# This is straight from setuptools_scm README
from pkg_resources import get_distribution, DistributionNotFound
try:
__version__ = get_distribution(__name__).version
except DistributionNotFound:
# package is not installed
pass
==> pbrversiontest/__main__.py <==
# this isn't required only for the demo
import pbrversiontest
print("version is " + pbrversiontest.__version__)
</code></pre>
<p>在开发目录中,您可能会有这样一个会话:</p>
^{pr2}$