2015-12-22 1 views
10

J'essaie d'utiliser autodoc uniquement pour les modules sélectionnés. J'ai créé un fichier qui comprend:Ignorer certains modules dans autodoc

.. automodule:: some.specific.module 
    :members: 

Et il est généré correctement. Malheureusement, autodoc continue d'essayer d'analyser d'autres fichiers (et échoue à cause d'erreurs d'importation). Je sais que je peux me moquer de certains modules, mais je veux une meilleure solution - arrêter le sphinx de les regarder pour commencer.

Comment puis-je m'assurer que seul le module demandé est chargé, et pas (par exemple) test.other.module.

+0

Est-ce que http://stackoverflow.com/a/21449475/344286 fait ce que vous voulez? Si oui, je l'afficherai comme réponse –

Répondre

0

Il est avéré être une erreur stupide. Étant donné que certains outils génèrent un échafaudage pour les sources de documentation api, ces fichiers ont été abandonnés et ont déclenché de mauvaises importations.

Comment cela a été trouvé:

  • sphynx a plusieurs niveaux d'enregistrement de débogage qui ne s'activables
  • normalement vous pouvez voir quelles lignes déclenchent les importations en sortie de débogage comme
[autodoc] /path/to/the/doc.rst:158: input: 
.. automodule:: app.module.name 
    :members: 
0

Je vois trois causes possibles pour que cela se produise:

  • cache de Sphinx est à l'origine des problèmes, et make clean résoudrait le problème
  • Votre module est situé dans un paquet, et le fichier __init__.py du package est l'importation de ces "autres fichiers" (ou pour être plus précis essaie d'importer );
  • Ces « autres fichiers » sont importés parce que vous avez défini PYTHONSTARTUP