Python sphinx 如何在conf.py中为sphinx设置自定义配置值?(例如,对于sphinx.ext.ifconfig)
[经过更多的测试和研究,我将原始问题一分为二] 我在conf.py中定义了自己的配置值,并编写了一个最小的扩展名,使它可以从rst文件中看到 在conf.py中: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',
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:找不到它作为。。。