2011-08-02 12 views
11

私はスフィンクスに私のプロジェクトのドキュメントを書くことをしようとしているとスフィンクスが私のモジュールにはOptionParserに遭遇した時はいつでも、それは私を与える:OptionParserはsphinxと競合していますか?

sphinx-build: error: no such option: -b 

私はそれは不可能だと思ったので、私はこれを確認するために、単純なモジュールを書きました:

from optparse import OptionParser 

"""some comment here""" 

parser = OptionParser(conflict_handler='resolve') 
parser.add_option('', '--force', action='store_true', dest='force', default=False, help='gqdel will skip asking questions, and delete them all.'); 
parser.add_option('', '--verbose', action='store_true', dest='verbose', default=False, help='Report additional information from gqdel') 

(options, args) = parser.parse_args() 

"""and here""" 

print "foo" 

また、同じエラーが表示されます。 私の最初は、次のようになります。

スフィンクスが実行されると、autodocがあなたのモジュールをインポートし、モジュール内のトップレベルのコードが実行される:ここで

some title 
========== 

.. automodule:: test 
    :members: 

答えて

17

私が起こる考えるものです。 OptionParserインスタンスが作成され、sphinx-buildに渡されるコマンドライン引数とオプションを処理します。one of which is -b。 OptionParserはこのオプションを許可しません。

モジュールをインポートするときに実行されないようにOptionParserコードを関数に配置します。

+2

+1; 'parser.parse_args()'はモジュールレベルのコードでは何の役にも立たず、sphynxがそれに不平を言うからだけではありません。 – SingleNegationElimination

+0

うん、それは私の問題だった、ありがとう – Michal

4

これは私のためのトリックでした、これを下部に追加してください。

if __name__ == '__main__': 

    parser = optparse.OptionParser() 
関連する問題