139 votes

sphinx-build fail - autodoc can't import/find module

J'essaie de démarrer avec Sphinx et j'ai l'impression d'avoir des problèmes incessants.

Commandement : docs/sphinx-quickstart

Je réponds à toutes les questions et tout fonctionne bien.

Commandement : docs/ls

Tout semble normal. Résultat : build Makefile source

Commandement : sphinx-build -d build/doctrees source build/html

Cela semble fonctionner. J'ai pu ouvrir le fichier index.html et voir une "coquille" de ce que je voulais.

Lorsque j'essaie d'insérer mon code source réel dans le champ source Je rencontre des problèmes.

Commandement : sphinx-build -d build/doctrees ../ys_utils build/html

Résultat :

Making output directory...
Running Sphinx v1.1.3
loading pickled environment... not yet created
No builder selected, using default: html
loading intersphinx inventory from http://docs.python.org/objects.inv...
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
Traceback (most recent call last):                                                                                               
  File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
ImportError: No module named ys_utils
Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
ImportError: No module named ys_utils.test_validate_ut
Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
ImportError: No module named ys_utils.git_utils
Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
ImportError: No module named setup.setup

/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:4: WARNING: autodoc can't import/find module 'ys_utils', it reported error: "No module named ys_utils", please check your spelling and sys.path
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:10: WARNING: autodoc can't import/find module 'ys_utils.test_validate_ut', it reported error: "No module named ys_utils.test_validate_ut", please check your spelling and sys.path
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:12: WARNING: don't know which module to import for autodocumenting u'UnitTests' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:18: WARNING: autodoc can't import/find module 'ys_utils.git_utils', it reported error: "No module named ys_utils.git_utils", please check your spelling and sys.path
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:24: WARNING: autodoc can't import/find module 'setup.setup', it reported error: "No module named setup.setup", please check your spelling and sys.path
WARNING: master file /home/ricomoss/workspace/nextgen/ys_utils/index.rst not found
looking for now-outdated files... none found
pickling environment... done
checking consistency... /home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:: WARNING: document isn't included in any toctree
done
preparing documents... done
writing output... [ 50%] index                                                                                                   
Exception occurred:
  File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/environment.py", line 1213, in get_doctree
    f = open(doctree_filename, 'rb')
IOError: [Errno 2] No such file or directory: '/home/ricomoss/workspace/nextgen/docs/build/doctrees/index.doctree'
The full traceback has been saved in /tmp/sphinx-err-jjJ7gM.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
Either send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>,
or report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!

Qu'est-ce qui ne va pas et comment puis-je y remédier ?

Editer :

J'aimerais pouvoir utiliser un Makefile pour gérer cela. Pour l'instant, j'ai deux dossiers dans mon projet.

nextgen/ls

docs ys_utils

J'ai besoin nextgen/docs/Makefile pour générer le code HTML pour ys_utils et tous les autres modules dont je disposerai.

2voto

juniper- Points 1482

J'ai obtenu la même erreur, mais pour une raison complètement différente de celle expliquée dans les autres réponses.

Mon .. automethod:: mymodule.func aurait dû être :

.. automethod:: mymodule::func

Voir le Nouveautés de la version 1.3 dans la section autoclass la documentation .

2voto

Erwing Forero Points 11

J'ai ajouté la ligne suivante au début du fichier conf.py :

import os
import sys
sys.path.insert(0, os.path.abspath('..'))
sys.path.append(os.path.abspath(
    os.path.join(__file__, "../../src")
))

mon projet a la structure suivante :

project_dir
|- setup.py
|- src
|  |- __init__.py
|  |- ....
|- docs
    |- conf.py
    |- ...

1voto

John Gaines Jr. Points 4127

Je pense que j'ai fait cela la première fois que j'ai essayé d'ajouter un fichier au toctree. Je pense que c'est parce que j'ai oublié la ligne vide entre la ligne :maxdepth et le nom du fichier.

.. Animatrix Concepts documentation master file, created by
   sphinx-quickstart on Thu Mar 22 18:06:15 2012.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to Animatrix Concepts documentation!
============================================

Contents:

.. toctree::
   :maxdepth: 2

   stuff

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

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

Ci-dessus se trouve mon fichier index.rst. stuff.rst se trouve dans le même répertoire que lui.

-2voto

naught101 Points 2023

Vous pouvez utiliser Tissage et le formatage noweb pour générer des documents de base qui incluent la sortie du code qui y est incorporé. En gros, vous écrivez votre fichier rst, avec du code python incorporé dans des morceaux marqués comme ceci :

<<echo=False>>=
print("some text that will appear in the rst file")
@

et Pweave exécutera ces morceaux, et les remplacera par leur sortie dans un fichier rst résultant, que vous pourrez ensuite utiliser avec sphinx. Voir la page Exemple de Pweave reST pour plus de détails.

-2voto

G K Patel Points 25

De nombreuses solutions proposées dans le fil de discussion vont dans le bon sens. Pour moi, la commande sur le documents officiels a été utile.

import pathlib
import sys
sys.path.insert(0, pathlib.Path(__file__).parents[2].resolve().as_posix())

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X