2017-12-04 6 views
1

私は、スフィンクスベースの共同編集ツールを開発しています。ユーザーは、Webアプリケーション(Python/Flaskで開発された)にアクセスして、スフィンクスで本を書いてpdfにコンパイルします。スフィンクスコンパイルからの警告リストの入手方法

私は、Python内からスフィンクスのドキュメントをコンパイルするために、私はこれまでのところは良い

import sphinx 
result = sphinx.build_main(['-c', 'path/to/conf', 
          'path/to/source/', 'path/to/out']) 

を使用する必要があることを学びました。

今、私のユーザーは、アプリに構文ミスを表示したいと考えています。しかし、出力(上記の例ではresult)は私に終了コードを与えるだけです。

ビルドプロセスからの警告リストを取得するにはどうすればよいですか?

おそらく私は野心的すぎるかもしれませんが、スフィンクスはPythonツールなので、私はツールとの素晴らしいpythonicインターフェイスを持つことを期待していました。たとえば、sphinx.build_mainの出力は、警告、行番号付きの非常に豊富なオブジェクトになる可能性があります。

関連する注意点として、メソッドsphinx.build_mainの引数は、コマンドラインインターフェイスのラッパーと似ています。

答えて

2

sphinx.build_main() を呼び出すと、sphinx.application.Sphinxオブジェクトが作成されます。そのようなオブジェクトを直接作成することもできます(「Pythonでシステムコールを作成する」ではなく)。

import os 
from sphinx.application import Sphinx 

# Main arguments 
srcdir = "/path/to/source" 
confdir = srcdir 
builddir = os.path.join(srcdir, "_build") 
doctreedir = os.path.join(builddir, "doctrees") 
builder = "html" 

# Write warning messages to a file (instead of stderr) 
warning = open("/path/to/warnings.txt", "w") 

# Create the Sphinx application object 
app = Sphinx(srcdir, confdir, builddir, doctreedir, builder, 
      warning=warning) 

# Run the build 
app.build() 
2

、あなたが順番にスフィンクスツールsphinx-buildを使用する、ドキュメントを構築するためにmakeを使用することができ、あなたがmakefileで設定し、あなたの最初のSphinxのドキュメントを生成するためにsphinx-quickstartを使用と仮定。 pass the -w <file> option to sphinx-buildには、警告とエラーをファイルに書き込むことができ、stderrもあります。

コマンドラインで渡されるオプションは、メイクファイルに設定されているその他のオプションよりも優先されます。conf.py

+0

「-w」オプションは非常に便利です。ありがとうございます。しかし、Pythonの中でシステムコールを作成して、Pythonの解決策であるsphinxを実行するのは非常に奇妙です。 –

関連する問題