【问题标题】:ReadTheDocs + Sphinx + setuptools_scm: how to?ReadTheDocs + Sphinx + setuptools_scm:怎么做?
【发布时间】:2020-04-11 20:37:00
【问题描述】:

我有一个项目,我通过git 标签管理版本。 然后,我使用setuptools_scm 在我的setup.py 中获取此信息,并生成一个文件(_version.py),该文件在为pip 生成轮子时包含在内。

git 未跟踪此文件,因为:

  1. git收集的信息相同
  2. 这会造成循环情况,即构建轮子会修改版本,从而更改源代码并生成新版本

现在,当我构建文档时,从_version.py 获取这个版本变得很自然,这一切都在本地运行良好。

但是,当我尝试在 ReadTheDocs 中执行此操作时,文档的构建失败,因为 git 未跟踪 _version.py,因此 ReadTheDocs 在从存储库中获取源时找不到它。


EDIT:我已经尝试使用duplicate中提出的方法,这与setuptools_scm在文档中指出的相同,即在@987654334中使用@:

from pkg_resources import get_distribution
__version__ = get_distribution('numeral').version
... # I use __version__ to define Sphinx variables

但我明白了:

pkg_resources.DistributionNotFound:未找到“数字”分布,应用程序需要此分布

(同样,在本地构建文档可以正常工作。)


如果不通过在两个地方维护版本号,我该如何解决这个问题?

【问题讨论】:

  • 这能回答你的问题吗? readthedocs and setuptools scm version wrong
  • @sinoroc 感谢您的建议,但这似乎是一个不同的问题。我没有得到版本根本
  • 您的readthedocs.yml 是什么?_version.py 究竟是如何生成的?你会覆盖setuptools_scm 默认值吗?
  • 我从未使用过类似的设置。但是根据我对说明的理解,其目的似乎是忽略setuptools_scm 自动生成的_version.py,而是用import pkg_resources; pkg_resources.get_distribution('myproject').version 编写自己的解决方案。实际上,现在我会使用以下内容:import importlib_metadata; importlib_metadata.version('myproject').
  • 另一方面,真的有什么可做的吗? readthedocs.org 似乎从 git 标记中获取版本号,类似于 setuptools_scm 的做法,所以两者都应该以相同的版本号结束,而且应该没问题。我是不是误会了什么?您能否澄清以下几点:“现在,当我构建文档时,从_version.py 获取此版本变得很自然”?

标签: python python-sphinx setuptools read-the-docs setuptools-scm


【解决方案1】:

最终的问题是 ReadTheDocs 没有选项来构建我的包,默认情况下是活动的,我预计会发生这种情况。

我所要做的就是在高级设置/默认设置中启用“安装项目”。

【讨论】:

    猜你喜欢
    • 2018-10-20
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 2012-07-16
    • 2017-01-05
    • 1970-01-01
    相关资源
    最近更新 更多