2012-12-12 8 views
22

Ho problemi a creare una directory di documenti (html) usando sphinx-build.Nessuna generazione dell'indice di modulo "modindex" quando si usa Sfinge

ho cercato

sphinx-build -b html source build 

così come

make html 

ma in entrambi i casi solo i file HTML search.html, index.html e genindex.html sono generati. Il file modindex.html è mancante.

Nel file conf.py ho impostato

html_domain_indices = True 

quindi dovrei avere un file modindex.html. Che cosa sto facendo di sbagliato? Non ricevo alcun messaggio di errore dopo aver creato i file html. Sto usando Sphinx 1.1.3 e Python 2.7 su Windows XP.

+1

Hai "*: ref:' modindex' "nel tuo file index.rst? Per favore, fornisci il contenuto del file index.rst. – alecxe

+2

Stai utilizzando l'autodoc o stai aggiungendo moduli al modindex manualmente? Se si utilizza autodoc, è necessario [includere ''sphinx.ext.autodoc'' nell'elenco delle estensioni in' conf.py'] (http://sphinx-doc.org/tutorial.html#autodoc). Se manuale, usa il ['..py: module: 'direttiva per ogni modulo che vuoi elencato nell'indice] (http://sphinx-doc.org/domains.html#directive-py:module). Controlla la generazione di errori re: ruoli e direttive, dato che modindex non si costruisce se ci sono errori. Ho avuto questo stesso problema all'inizio, ma il controllo degli errori lo ha risolto. –

+0

Ho lo stesso problema di Karin, dove l'impostazione di autodoc ha seguito i checkpoint di Mark. Tuttavia, non è ancora generato monindex.html. Ho perso qualche passaggio? –

risposta

19

Breve versione

  • corsa sphinx-apidoc -o . mymodule
  • rimuovere il commento e modificare conf.py. Per questo esempio, sys.path.insert(0, os.path.abspath('mymodule'))
  • re-run make html

Risposta lunga

posso riprodurre il problema con questo modulo di esempio:

$cat mymodule/mymodule.py 
def fn1(): 
    '''First function''' 
    pass 

def fn2(): 
    '''Second function''' 
    pass 

Esecuzione sphinx-quickstart produce il seguente albero:

$tree 
. 
├── Makefile 
├── _build 
├── _static 
├── _templates 
├── conf.py 
├── index.rst 
├── mymodule 
   └── mymodule.py 

$cat index.rst 
.. sphinx example documentation master file, created by 
    sphinx-quickstart on Mon Mar 30 15:28:37 2015. 
    You can adapt this file completely to your liking, but it should at least 
    contain the root `toctree` directive. 

con predefinito index.rst:

Welcome to sphinx example's documentation! 
========================================== 

Contents: 

.. toctree:: 
    :maxdepth: 2 



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

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

esecuzione make html a questo punto non produce alcun output in _build/html/py-modindex.html. Questo perché sphinx ha bisogno di file .rst che descrivano ogni modulo. Fortunatamente è facile da produrre usando sphinx-apidoc -o . mymodule. Questo dà due nuovi file, di cui solo il mymodule.rst è necessario per risolvere il problema di modindex nella domanda.

$head *mod*rst 
==> modules.rst <== 
mymodule 
======== 

.. toctree:: 
    :maxdepth: 4 

    mymodule 

==> mymodule.rst <== 
mymodule module 
=============== 

.. automodule:: mymodule 
    :members: 
    :undoc-members: 
    :show-inheritance: 

esecuzione make html a questo punto ancora non funziona. Ma decommentare e cambiare la riga che inizia con sys.path.insert in conf.py risolve le cose.

mio è: sys.path.insert(0, os.path.abspath('mymodule'))

PS: per evitare un ulteriore avviso, aggiungere modules alla Contents: toctree nel file index.rst.

Problemi correlati