2014-08-28 12 views
6

Ich versuche, ein Paket in Python zu dokumentieren. Im Moment habe ich die folgende Verzeichnisstruktur:Wie dokumentiere ich Python-Pakete mit Sphinx

. 
└── project 
    ├── _build 
    │   ├── doctrees 
    │   └── html 
    │    ├── _sources 
    │    └── _static 
    ├── conf.py 
    ├── index.rst 
    ├── __init__.py 
    ├── make.bat 
    ├── Makefile 
    ├── mod1 
    │   ├── foo.py 
    │   └── __init__.py 
    ├── mod2 
    │   ├── bar.py 
    │   └── __init__.py 
    ├── _static 
    └── _templates 

Dieser Baum ist das Ergebnis des Abschuss von sphinx-quickstart. In conf.py habe ich sys.path.insert(0, os.path.abspath('.')) unkommentiert und ich habe extensions = ['sphinx.ext.autodoc'].

Mein index.rst ist:

.. FooBar documentation master file, created by 
    sphinx-quickstart on Thu Aug 28 14:22:57 2014. 
    You can adapt this file completely to your liking, but it should at least 
    contain the root `toctree` directive. 

Welcome to FooBar's documentation! 
================================== 

Contents: 

.. toctree:: 
    :maxdepth: 2 

Indices and tables 
================== 

* :ref:`genindex` 
* :ref:`modindex` 
* :ref:`search` 

In allen __init__.py ‚s habe ich eine docstring und gleiche gilt für die Module foo.py und bar.py. Wenn ich make html in dem Projekt ausführe, sehe ich jedoch keinen der Docstings. Hier

+0

Sie haben eine einzige index.rst-Datei der obersten Ebene, aber sonst nichts. Das ist nicht genug. Sie müssen [sphinx-apidoc] (http://sphinx-doc.org/man/sphinx-apidoc.html) ausführen, um die benötigten ersten Quellen zu erzeugen (oder sie "von Hand" zu erstellen). – mzjn

+0

@mzjn Können Sie es ausarbeiten? In welchem ​​Verzeichnis sollte ich 'sphinx-apidoc' aufrufen? Sieht "Sphinx" nicht automatisch in den Quellen nach? – Dror

+0

Sphinx benötigt .rst-Dateien mit Anweisungen wie 'automodule' oder' autoclass', um API-Dokumentation zu generieren. Es extrahiert nicht aus den Quellen ohne das. Vielleicht hast du erwartet, dass Sphinx wie Epydoc oder Doxygen funktioniert, aber das tut es nicht. Siehe auch diese Antworten: http://stackoverflow.com/a/2441159/407651, http://stackoverflow.com/a/6109098/407651. – mzjn

Antwort

3

eine Übersicht:

  1. Dokument Ihres Paket mit Docstrings in den Quellen.
  2. Verwenden Sie sphinx-quickstart, um ein Sphinx-Projekt zu erstellen.
  3. Führen Sie sphinx-apidoc aus, um die ersten Quellen zu generieren, die für die Verwendung mit autodoc eingerichtet wurden. Mit diesem Befehl mit dem Flag -F wird auch ein vollständiges Sphinx-Projekt erstellt. Wenn sich Ihre API stark ändert, müssen Sie diesen Befehl möglicherweise mehrmals erneut ausführen.
  4. Erstellen Sie die Dokumentation mit sphinx-build.

Hinweise:

+1

Nur um es klar zu machen: Guarding wird zum Beispiel benötigt in 'setup.py' – Dror

+0

Wo soll ich' sphinx-apidoc' betreiben? Was machen Sie mit generierten '.rst' Dateien? Wohin mit ihnen? Wie unterscheidet sich '-F' von' spinx-quickstart'? – minerals

+0

@Mineralien. * Wo soll ich sphinx-apidoc betreiben? * Was meinst du mit "wo"? Was ist das Problem? * Was macht man mit generierten .rst Dateien? Wohin mit ihnen? * Du legst sie überall hin, wo es dir passt. Und dann rennst du 'sphinx-build' auf ihnen. – mzjn