如何将Sphinx警告重定向到stdout,但在stderr中保留错误

时间:2018-06-11 04:02:37

标签: python stdout python-sphinx stderr

在Sphinx构建中,所有警告和错误都写在stderr中。但是,我只希望用stderr写的错误和用stdout写的警告。

有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

除非您将sphinx作为包加载并对其机器进行猴子修补,否则无法更改:

sphinx\cmdline.py

<...>
def main(argv=sys.argv[1:]):
<...>
    status = sys.stdout
    warning = sys.stderr
    error = sys.stderr

    if args.quiet:
        status = None

    if args.really_quiet:
        status = warning = None

    if warning and args.warnfile:
        try:
            warnfp = open(args.warnfile, 'w')
        <...>
        warning = Tee(warning, warnfp)  # type: ignore
        error = warning

    <...>
        with patch_docutils(), docutils_namespace():
            app = Sphinx(srcdir, confdir, outdir, doctreedir, args.builder,
                         confoverrides, status, warning, args.freshenv,
                         args.warningiserror, args.tags, args.verbosity, args.jobs)
            app.build(args.force_all, filenames)
            return app.statuscode

正如您所看到的,Sphinx甚至没有针对错误与警告的单独构造函数参数。