2012-09-12 24 views
6

Heredé una base de código bastante grande para la que quiero crear documentación html. Como está escrito en Python, decidí usar sphinx porque los usuarios del código están acostumbrados al diseño y la funcionalidad de la documentación python que se creó con sphinx. Utilicé el comando sphinx-apidoc para crear automáticamente los primeros archivos. Importé la ruta del módulo en sys.path para que sphinx pueda encontrar el código.¿Sphinx ejecuta mi código al ejecutar 'make html'?

Hasta ahora todo bien. Sin embargo, cuando intento crear el html con el comando make html, aparecen muchas trazas y algunos de los ejemplos en la base de código parecen ejecutarse. ¿Cuál puede ser el motivo y cómo puedo evitar que eso suceda?

+1

Ejemplos en la base de código, como, ¿código después de un '__main__'? O doctests (ya sabes, las pruebas en una docstring)? –

+0

Buena pregunta. Dudo en ejecutarlo de nuevo. El comando exacto para sphinx-apidoc fue: 'sphinx-apidoc -f -F -o. ../ src' sigue por 'make html'. ¿Iniciaría eso la ejecución de doctests? Si es así, ¿cómo puedo evitar que haga eso? – AME

+1

(1) comprueba si tienes algún código en '__main__'; (2) si no está utilizando la extensión ['doctest'] (http://sphinx.pocoo.org/ext/doctest.html), debe definirla. Verifique su archivo de configuración para asegurarse. –

Respuesta

8

Al utilizar autodoc, Sphinx importa los módulos documentados, por lo que se ejecuta todo el código de nivel de módulo. Esto sucede cada vez que haces "make html". En ese sentido, Sphinx "ejecuta" tu código.

Puede que tenga que organizar el código de una manera un poco diferente para que los errores desaparezcan (mueva el código de nivel de módulo a las funciones). Consulte this question para ver un ejemplo de lo que puede pasar.

Esta es mi suposición, pero puede que no sea toda la historia. Es difícil decir más sin información adicional.

0
def main(): 

    print('hello world') 

if __name__ == '__main__': 

    main() 

De esta manera, su código no se ejecutará.

+0

Un poco más de explicación probablemente ayudaría a OP y otros –

Cuestiones relacionadas