Python 使用docutils.core.publish_字符串而不是publish_cmdline,`settings_overrides`包含HTML特定选项的参数无效!
下面是我的代码Python 使用docutils.core.publish_字符串而不是publish_cmdline,`settings_overrides`包含HTML特定选项的参数无效!,python,html,restructuredtext,docutils,Python,Html,Restructuredtext,Docutils,下面是我的代码 from docutils.core import publish_string from docutils.writers.html4css1 import Writer as HisWriter args = { 'stylesheet' : '/home/wonder/lab/css/note.css', 'stylesheet-path' : None, } src = 'ccav' print publish_string(src, writer=H
from docutils.core import publish_string
from docutils.writers.html4css1 import Writer as HisWriter
args = {
'stylesheet' : '/home/wonder/lab/css/note.css',
'stylesheet-path' : None,
}
src = 'ccav'
print publish_string(src, writer=HisWriter(), settings_overrides=args)
我得到了以下错误:
AssertionError: stylesheet and stylesheet_path are mutually exclusive.
因此,我将args
更改为:
args = {
'stylesheet-path' : '/home/wonder/lab/css/note.css',
'stylesheet' : None,
}
现在,没有错误了。但是,插入HTML输出的样式表不是/home/wonder/lab/css/note.css
的内容。它仍然是/usr/local/lib/python2.7/dist-packages/docutils/writers/html4css1/html4css1.css
也就是说,与使用publish\u cmdline时在命令行中指定选项不同,使用publish\u字符串时,携带HTML特定选项的settings\u overrides
参数无效
from docutils.core import publish_string
from docutils.writers.html4css1 import Writer as HisWriter
src = 'ccav'
args = {
'stylesheet_path' : '/path/to/your/stylesheet'
}
print publish_string(src, writer=HisWriter(), settings=None, settings_overrides=args)
您需要执行settings=None
并使用stylesheet\u path
而不是stylesheet
,以使其忽略内置的样式表
编辑:注意,我在distutils附带的一个示例脚本的源代码中找到了这个答案,因此即使
settings=None
看起来很糟糕,它似乎不是。当您设置'stylesheet':'/home/wonder/lab/css/note.css'
并同时设置“'stylesheet-path':'。/”或类似的东西时会发生什么呢?谢谢您的建议!我已经尝试过了。letargs={'stylesheet-path':'/home/wonder/lab/css/note.css'、'stylesheet':'。/'、}
或args={'stylesheet':'/home/wonder/lab/css/note.css','stylesheet-path':'。/',}
。但在这两种情况下,我总是得到与以前相同的结果:断言错误:样式表和样式表路径是互斥的。
我找到了publish\u string的一个示例用法。但它根本没有使用HTML规范选项。看看我的答案,它对我有效。还记得通过单击下一步的复选标记来接受答案如果它解决了你的问题,我将向它致谢。非常感谢!你的代码已经解决了我的问题。它正如我所期望的那样工作。但即使你也没有抓住要点!settings=None
是不必要的。你没有看到你粘贴的代码中的符号stylesheet\u path
,它是stylesheet\u path
而不是stylesheet path
!哇,我一点也没注意到。复制粘贴拯救!我不得不抱怨这是一个多么糟糕的设计,它怎么能在settings_spec和cmd行中使用样式表路径
,但在这种情况下使用不同的样式表路径
!这浪费了我很多时间!而且我在中找不到任何关于它的东西,这真的是关于世界的我见过的t文档。只需阅读源代码就容易多了。谢谢!你能给我你参考的源代码的链接吗?