Sphinx:"没有名为compat的模块"

时间:2018-02-20 18:49:26

标签: python documentation python-sphinx

我们的Travis CI测试刚开始随机打破:

https://travis-ci.org/Gallopsled/pwntools/builds/343962397

显示错误消息:

Could not import extension sphinxcontrib.autoprogram (exception: No module named compat)

问题似乎是我们的Sphinx依赖项之一依赖于已弃用的功能:https://github.com/sphinx-contrib/autoprogram/issues/1

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我们可以通过将模块及其内容放入Sphinx conf.py中来动态重新注入模块及其内容:

try:
    import sphinx.util.compat
except ImportError:
    import sys
    import types
    import sphinx.util
    import docutils.parsers.rst
    class compat(types.ModuleType):
        Directive = docutils.parsers.rst.Directive
    sphinx.util.compat = compat('sphinx.util.compat')
    sys.modules['sphinx.util.compat'] = sphinx.util.compat