readthedocs 和 setuptools scm 版本错误

readthedocs and setuptools scm version wrong

我有一个包我刚刚更新为使用 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

构建日志在构建文档时没有提及版本。

是否可以解决这个问题?

谢谢

我看到你正在构建 this project

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

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

在阅读文档文档中,有一个description of the process

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

安装要求

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

然而,它没有解释的是 'version' 的来源,或者 update_imported_docs 的作用。我怀疑问题出在一些微妙的地方,阅读文档正在做的修改回购协议。

这里是one place where the conf.py file gets modified

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

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

我们将与 sphinx 团队合作,提供此流程的 automated/painless 版本

setuptools_scm 的文档现在 instructions 关于如何与 readthedocs 一起使用:

It is discouraged to use setuptools_scm from sphinx itself, instead use pkg_resources after editable/real installation:

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

The underlying reason is, that services like readthedocs sometimes change the workingdirectory for good reasons and using the installed metadata prevents using needless volatile data there.

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