2012-09-12 4 views
6

Ho ereditato un codebase piuttosto grande per il quale voglio creare la documentazione html. Dato che è scritto in Python, ho deciso di usare la sfinge perché gli utenti del codice sono abituati al design e alla funzionalità della python-documention creata con la sfinge. Ho usato il comando sphinx-apidoc per creare automaticamente i file rst. Ho importato il percorso del modulo in sys.path in modo che la sfinge possa trovare il codice.La sfinge esegue il mio codice eseguendo 'make html'?

Fin qui tutto bene. Tuttavia, quando provo a creare l'html usando il comando make html, ci sono molti traceback che appaiono e alcuni degli esempi nel codebase sembrano essere eseguiti. Quale può essere la ragione di ciò e come posso evitare che ciò accada?

+1

Esempi nel codice base, come, codice dopo un '__main__'? O doctest (lo sai, prova in una docstring)? –

+0

Buona domanda. Esito a farlo di nuovo. Il comando esatto per sfinge-apidoc era: 'sphinx-apidoc -f -F -o. ../ src' segue 'make html'. Avvierebbe l'esecuzione dei doctest? Se è così, come posso impedirgli di farlo? – AME

+1

(1) controlla se hai qualche codice in '__main__'; (2) se non stai usando l'estensione ['doctest'] (http://sphinx.pocoo.org/ext/doctest.html), dovresti essere in primo piano. Controlla il tuo file di configurazione per essere sicuro. –

risposta

8

Quando si utilizza autodoc, la Sfinge importa i moduli documentati, quindi viene eseguito tutto il codice a livello di modulo. Questo succede ogni volta che fai "make html". In questo senso, Sphinx "esegue" il tuo codice.

Potrebbe essere necessario organizzare il codice in modo un po 'diverso per far scomparire gli errori (spostare il codice a livello di modulo per le funzioni). Vedi this question per un esempio di cosa può accadere.

Questa è la mia ipotesi, ma potrebbe non essere l'intera storia. È difficile dire di più senza ulteriori informazioni.

0
def main(): 

    print('hello world') 

if __name__ == '__main__': 

    main() 

In questo modo il codice non verrà eseguito.

+0

Un po 'più di spiegazione potrebbe aiutare l'OP e altri –