Doxygenを使用してPythonコードを文書化する方法[クローズ]


94

私はDoxygenがCまたはPHPコードのドキュメントを作成するのが好きです。私は今後のPythonプロジェクトを持っていますが、Pythonには/* .. */コメントがなく、Pythonのように文書化する独自の自己文書化機能もあることを覚えていると思います。

私はDoxygenに精通しているので、それを使用してPythonドキュメントを作成するにはどうすればよいですか?特に気をつけなければならないことはありますか?

回答:


62

これはdoxygenのWebサイトに記載されていますが、ここに要約します。

doxygenを使用してPythonコードを文書化できます。Pythonドキュメントの文字列構文を使用できます。

"""@package docstring
Documentation for this module.

More details.
"""

def func():
    """Documentation for a function.

    More details.
    """
    pass

この場合、コメントはdoxygenによって抽出されますが、特別なdoxygenコマンドを使用することはできません。

または、(doxygenのCスタイル言語と同様に#)メンバーの前の最初の行にあるコメントマーカー()を2倍にすることができます。

## @package pyexample
#  Documentation for this module.
#
#  More details.

## Documentation for a function.
#
#  More details.
def func():
    pass

その場合、特別なdoxygenコマンドを使用できます。特定のPython出力モードはありませんが、に設定OPTMIZE_OUTPUT_JAVAすることで結果を改善できるようYESです。

正直なところ、私はその違いに少し驚いています-doxygenが##ブロックまたは "" "ブロックのコメントを検出できるようになると、ほとんどの作業が完了し、で特別なコマンドを使用できるようになります。どちらの場合でも、「」を使用している人々がより多くのPythonicドキュメントの慣行に従うことを期待しているのでしょうか。


57
Pythonのドキュメントとしてのコメントは悪いです。コメントはモジュールメンテナ向けです(なぜ、どのように実装されるのか)。すべてのドキュメントはdocstring(使用方法)である必要があります。
jfs 2008

4
Pythonはコメントを取得し、それらをdocstringとして使用するため、2つの形式はどちらもpydocで機能します。
docwhat 2011

10
通常のdocstring内で特別なコマンドを使用できるようにするdoxypyを見てください
マウロ

84

doxypy入力フィルターを使用すると、Doxygenのほとんどすべてのフォーマットタグを標準のPythondocstringフォーマットで使用できます。大規模なC ++とPythonの混合ゲームアプリケーションフレームワークを文書化するために使用しますが、うまく機能しています。


2
質問の正しい答えであるこの答えが一番下にもあるのは悲しいことです:(
Dave Lasley 2014

9
Pythonic docstringをDoxygenが使用できるものに変換するのでdoxypypyをチェックすることもできます。
Feneric 2016

8
Doxypyは死んでなくなっているように見えます...
naught101

24

結局のところ、2つのオプションしかありません。

Doxygenを使用してコンテンツを生成するか、Sphinx *を使用してコンテンツを生成します。

  1. Doxygen:ほとんどのPythonプロジェクトに最適なツールではありません。ただし、CまたはC ++で記述された他の関連プロジェクトを処理する必要がある場合は、それが理にかなっている可能性があります。このために、doxypypyを使用してDoxygenとPythonの間の統合を改善できます。

  2. Sphinx:Pythonプロジェクトを文書化するための事実上のツール。ここには、手動、半自動(スタブ生成)、および完全自動(Doxygenのような)の3つのオプションがあります。

    1. 手動のAPIドキュメントについては、Sphinxautodocがあります。これは、APIで生成された要素が埋め込まれたユーザーガイドを作成するのに最適です。
    2. 半自動の場合、Sphinxautosummaryがあります。sphinx-autogenを呼び出すようにビルドシステムをセットアップするか、autosummary_generateconfigを使用してSphinxをセットアップすることができます。自動要約を使用してページを設定してから、手動でページを編集する必要があります。オプションはありますが、このアプローチでの私の経験では、構成が多すぎるため、新しいテンプレートを作成した後でも、バグと、パブリックAPIとして公開されているものと公開されていないものを正確に判断できないことがわかりました。私の意見では、このツールは手動編集のみを必要とするスタブ生成に適しています。マニュアルになってしまうショートカットのようなものです。
    3. 全自動。これは何度も批判されており、AutoAPIが登場するまで、Sphinxと統合された完全自動のPython APIジェネレーターは長い間ありませんでした。これは、ブロックの新しい子供です。これは、Pythonでの自動API生成に最適です(注:恥知らずな自己宣伝)。

注意すべき他のオプションがあります:

  • Breathe:これは非常に良いアイデアとして始まり、Doxygenを使用する他の言語でいくつかの関連プロジェクトを扱うときに意味があります。アイデアは、Doxygen XML出力を使用し、それをSphinxにフィードしてAPIを生成することです。したがって、Doxygenのすべての長所を維持し、Sphinxのドキュメントシステムを統合することができます。理論的には素晴らしい。さて、実際には、プロジェクトを最後にチェックしたときは、本番の準備ができていませんでした。
  • pydoctor *:非常に特別です。独自の出力を生成します。Sphinxとの基本的な統合と、いくつかの優れた機能があります。

autoapiを使用するコマンドは何ですか。autoapiモジュールを含めるようにconf.pyを変更しました。現在、「sphinx-apidoc -oapidocs--full」を実行しています。
Sandeep 2017

追加のコマンドは必要ありません。sphinx-buildを使用してSphinxドキュメントをビルドするだけです。私はそれを次のようにToxと統合しています:github.com/HPENetworking/cookiecutter_python/blob/module/…–
Havok

@Havokモジュールのすべての要素を変数expliciteに配置する必要がある場合、AutoAPIがどのように「完全自動」であるかわかりません__all__
buhtz 2018年

20

Sphinxは、私が理解しているように、主にソースコードから独立して記述されたドキュメントをフォーマットするためのツールです。

Python docstringからAPIドキュメントを生成するための主要なツールは、pdocpydoctorです。これは、TwistedBazaar用にpydoctorが生成したAPIドキュメントです。

もちろん、作業中にdocstringを確認したいだけの場合は、「pydoc」コマンドラインツールとhelp()インタラクティブインタープリターで使用できる関数があります。


2
確かに、sphinxはソースコードから独立して記述されたドキュメントをベースとして使用しますが、autodoc拡張機能を使用すると、Pythonモジュールからのdocstringを簡単に含めることができます。その動的な性質のために、Pythonモジュールの手書きのドキュメントは生成されたAPIドキュメントよりも便利だと思います。
ピーターホフマン

3
文書化されていないプロジェクトでクラス間の構造と関係を調べようとしている場合、「手書き」のドキュメントは利用できません。
ЯрославРахматуллин

13

他の非常に優れたドキュメントツールはsphinxです。これは、今後のpython 2.6ドキュメントで使用され、djangoで使用されます。や他の多くのpythonプロジェクトでます。

スフィンクスのウェブサイトから:

  • 出力形式:印刷可能なPDFバージョンのHTML(Windows HTMLヘルプを含む)およびLaTeX
  • 広範な相互参照:関数、クラス、用語集用語、および同様の情報のセマンティックマークアップと自動リンク
  • 階層構造:兄弟、親、子への自動リンクを備えた、ドキュメントツリーの簡単な定義
  • 自動インデックス:一般インデックスとモジュールインデックス
  • コード処理:Pygments蛍光ペンを使用した自動強調表示
  • 拡張機能:コードスニペットの自動テスト、Pythonモジュールからのdocstringの組み込みなど

11
試してみました。スフィンクス自体は非常に興味深いツールですが、doxygenから来るとは思っていませんでした。本当に優れたエンドカスタマードキュメントのためのツールであるdoxygenは、APIの概要を印刷可能な形式で表示したいSWデザイナーにとってはるかに優れています。
ゼーン2014年

3
@Zane同意します。Doxygen愛好家として、私は完全に自動化されたAPIリファレンスガイドの生成を見逃しすぎました。他のオプションが利用可能になっているので、私の答えを確認してください。
Havok 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.