Python sphinx 如何在conf.py中为sphinx设置自定义配置值?(例如,对于sphinx.ext.ifconfig)

Python sphinx 如何在conf.py中为sphinx设置自定义配置值?(例如,对于sphinx.ext.ifconfig),python-sphinx,Python Sphinx,[经过更多的测试和研究,我将原始问题一分为二] 我在conf.py中定义了自己的配置值,并编写了一个最小的扩展名,使它可以从rst文件中看到 在conf.py中: sys.path.insert(0, os.path.abspath('.')) extensions = ['sphinx.ext.ifconfig', 'myExt'] testlevel = 2 在本地myExt.py中: def setup(app): app.add_config_value('testlevel',

[经过更多的测试和研究,我将原始问题一分为二]

我在conf.py中定义了自己的配置值,并编写了一个最小的扩展名,使它可以从rst文件中看到

在conf.py中:

sys.path.insert(0, os.path.abspath('.'))
extensions = ['sphinx.ext.ifconfig', 'myExt']
testlevel = 2
在本地myExt.py中:

def setup(app):
   app.add_config_value('testlevel', '', True)
这很好用;test.rst包括:

.. ifconfig:: testlevel == 2

    Hurray, it seems to work

根据的文档,似乎可以直接从conf.py调用*app.add\u config\u value*。有人能告诉我怎么做吗?

这里要注意两件事:

  • 首先,
    conf.py
    文件只是一个python文件。它唯一的特别之处在于斯芬克斯专门寻找并导入了它。您可以在此文件中执行普通python文件中可以执行的任何操作
  • 其次是
    conf.py
    文件。换句话说,它可以有一个
    setup
    函数,其工作方式应该与扩展中的相同。因此,如果将扩展名(
    myExt.py
    )的内容复制到
    conf.py
    文件中,它应该可以正常工作(tm)

  • 非常感谢,凯文。我想我第一次尝试将setup函数放到conf.py中,但这似乎不起作用。我是否也必须声明扩展=[…,'conf']?我不这么认为。至少我不记得曾经这样做过,文档似乎表明,只要在conf.py中放置一个setup函数就可以了。conf.py是编译和评估的,而不是像扩展列表中提供的那样导入。那还没问题。但是conf.py定义是经过pickle处理的,因为它不是一个合适的模块,像
    类mynode(nodes.Inline,nodes.Element):pass这样的定义将导致PicklingError:无法pickle:找不到它作为。。。