3

我有一个我刚刚更新以使用 setuptools_scm 的软件包,并在 readthedocs 中发现版本号错误。

http://sshuttle.readthedocs.org/en/v0.77/显示:

Version: 0.78.dev0+ng083293e.d20160304

但是由于版本 083293e 有 0.77 标签,版本字符串应该只是 0.77

看起来 readthedocs 可能会在构建之前对我的源代码进行更改。

我查看了 readthedocs 构建日志,它似乎在某个阶段(0.77)具有正确的版本,但是这是在它构建文档之前。

Processing dependencies for sshuttle==0.77
Finished processing dependencies for sshuttle==0.77

构建文档时构建日志未提及版本。

有可能解决这个问题吗?

谢谢

4

3 回答 3

1

我看到你正在构建这个项目

显然,在确定版本之前,有些东西正在改变存储库状态。您可以通过在自己构建文档之前更改其中一个文件来复制类似的行为:

(sshuttle) $ python setup.py --version
0.77
(sshuttle) $ cat >> setup.py
# a comment
(sshuttle) $ python setup.py --version
0.78.dev0+ng083293e.d20160403

在阅读文档文档中,有对该过程的描述

在那里,您可以看到 RTD 执行的步骤,即 (a) 运行 setup.py install 然后 (b) 在 requirements.txt 中安装需求。

我已经确认这些步骤都不应该改变回购状态。

然而,它没有解释的是“版本”的来源,或者 update_imported_docs 的作用。我怀疑问题在于阅读文档所做的修改回购的微妙之处。

这是conf.py 文件被修改的地方

也许添加docs/conf.py到您的 .gitignore 将允许忽略这些更改,因此在计算项目版本时不会弄脏您的工作状态。

于 2016-04-03T13:47:10.307 回答
0

https://github.com/pypa/setuptools_scm/issues/84已更新记录此

我们将与 sphinx 团队合作,提供此过程的自动化/无痛版本

于 2016-09-17T05:24:34.877 回答
0

setuptools_scm 的文档现在包含有关如何与 readthedocs 一起使用的说明

不鼓励使用 sphinx 本身的 setuptools_scm,而是在可编辑/实际安装后使用 pkg_resources:

from pkg_resources import get_distribution
release = get_distribution('myproject').version
# for example take major/minor
version = '.'.join(release.split('.')[:2])

根本原因是,像 readthedocs 这样的服务有时会出于充分的理由更改工作目录,并且使用已安装的元数据可以防止在那里使用不必要的易失性数据。

这避免了根据其他答案使用 kluges 的需要。

于 2017-01-31T05:01:57.470 回答