我(试图)使用setuptools来构建一个包。我试图使用版本号major.minor.mercurial_revision
,但它抱怨说:如何在setuptools包中包含VCS信息
The version specified ('1.0.7ae7970a82c1') is an invalid version, this may
not work as expected with newer versions of setuptools, pip, and PyPI.
Please see PEP 440 for more details.`
好。所以我看看PEP440里面说基本上说“不要那么做”:
As hashes cannot be ordered reliably such versions are not permitted in the
public version field. As with semantic versioning, the public .devN
suffix may be used to uniquely identify such releases for publication,
while the original DVCS based label can be stored in the project metadata.
我理解这里的逻辑。但如何可以我在项目元数据中包含hg修订版?我无法找到setup.py:setup()
的参数可以包含的任何(最新)文档,但是我发现的distutils之一here似乎没有为此提供一个字段。
因为那么你已经有了一个在你的源代码中未跟踪的文件,这不是很好,你的构建脚本必须做“回声”位。这都是非标准的,上面的答案解决了它。 – lost
如果您在项目中包含修订版本信息 - 通过'setup.py'或其他文件 - 您显然会*生成*该文件作为发布过程的一部分。因此,无论是(a)未跟踪,还是(b)您都会自动更新/提交它作为发布过程的一部分。 – larsks
嗯。你当然是对的。事实上,这些问题有点正交; Remco的答案解决了让distutils接受我的版本号,但是从包内的“内部”获取*版本号需要一个'__revision__'或者类似你的建议。 – lost