Question

I am trying to use sphinx to document a project of mine. I have used autodoc strings within all of my modules and files. I used sphinx-apidoc to automatically generate rst files for my code. So far, so good.

The problem is that sphinx is not able to import any of my modules, even though I have added my project to sys.path.

My unit tests pass and can import my modules just fine. I'm kind of at my wit's end; I've tried all sorts of renaming and moving and reloading and reconfiguring without success and it is very frustrating to say the least.

Here is my document structure:

project
├── collectionprocessor.py
├── config.py
├── createdb.py
├── database
│   ├── database.py
│   └── __init__.py
├── docs
│   ├── _build
│   ├── conf.py
│   ├── generated
│   ├── index.rst
│   ├── Makefile
│   ├── modules.rst
│   ├── project.database.rst
│   ├── project.document.rst
│   ├── project.mixins.rst
│   ├── project.parser.rst
│   ├── project.rst
│   ├── project.sequence.rst
│   ├── project.tests.rst
│   ├── _static
│   └── _templates
├── document
│   ├── document.py
│   ├── __init__.py
│   ├── metadata.py
│   ├── parsedparagraph.py
│   ├── sentence.py
│   ├── taggedword.py
│   └── unit.py
├── __init__.py
├── logger.py
├── mixins
│   ├── comparebydict.py
│   ├── __init__.py
│   └── kwargstodict.py
├── models.py
├── parser
│   ├── dependency.py
│   ├── documentparser.py
│   ├── __init__.py
│   └── parseproducts.py
├── README.md
├── runtests.py
├── sequence
│   ├── __init__.py
│   ├── sequenceprocessor.py
│   └── sequence.py
├── stringprocessor.py
├── structureextractor.py
├── tests
│   ├── data
│   ├── __init__.py
│   ├── __pycache__
│   ├── raw_parse.txt
│   ├── testcollectionprocessor.py
│   ├── testdocumentparser.py
│   ├── testextractor.py
│   ├── testlogger.py
│   ├── testsequenceprocessor.py
│   └── teststringprocessor.py

Here is the relevant line in the sphinx config file:

sys.path.insert(0, os.path.abspath("../"))

Here is the output of sphinx-build:

[docs]─[$]>>> sphinx-build -b html ./ ./generated/
Running Sphinx v1.2.2
loading pickled environment... done
building [html]: targets for 0 source files that are out of date
updating environment: 0 added, 7 changed, 0 removed
reading sources... [100%] project.tests                                                                                                             
/home/plasma/prog/project/docs/project.rst:22: WARNING: autodoc: failed to import module u'project.collectionprocessor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.collectionprocessor
/home/plasma/prog/project/docs/project.rst:30: WARNING: autodoc: failed to import module u'project.config'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.config
/home/plasma/prog/project/docs/project.rst:38: WARNING: autodoc: failed to import module u'project.createdb'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.createdb
/home/plasma/prog/project/docs/project.rst:46: WARNING: autodoc: failed to import module u'project.logger'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.logger
/home/plasma/prog/project/docs/project.rst:54: WARNING: autodoc: failed to import module u'project.models'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.models
/home/plasma/prog/project/docs/project.rst:62: WARNING: autodoc: failed to import module u'project.runtests'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.runtests
/home/plasma/prog/project/docs/project.rst:70: WARNING: autodoc: failed to import module u'project.stringprocessor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.stringprocessor
/home/plasma/prog/project/docs/project.rst:78: WARNING: autodoc: failed to import module u'project.structureextractor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.structureextractor
/home/plasma/prog/project/docs/project.rst:87: WARNING: autodoc: failed to import module u'project'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project
/home/plasma/prog/project/docs/project.database.rst:10: WARNING: autodoc: failed to import module u'project.database.database'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.database.database
/home/plasma/prog/project/docs/project.database.rst:19: WARNING: autodoc: failed to import module u'project.database'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.database
/home/plasma/prog/project/docs/project.document.rst:10: WARNING: autodoc: failed to import module u'project.document.document'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.document.document
/home/plasma/prog/project/docs/project.document.rst:18: WARNING: autodoc: failed to import module u'project.document.metadata'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.document.metadata
/home/plasma/prog/project/docs/project.document.rst:26: WARNING: autodoc: failed to import module u'project.document.parsedparagraph'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.document.parsedparagraph
/home/plasma/prog/project/docs/project.document.rst:34: WARNING: autodoc: failed to import module u'project.document.sentence'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.document.sentence
/home/plasma/prog/project/docs/project.document.rst:42: WARNING: autodoc: failed to import module u'project.document.taggedword'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.document.taggedword
/home/plasma/prog/project/docs/project.document.rst:50: WARNING: autodoc: failed to import module u'project.document.unit'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.document.unit
/home/plasma/prog/project/docs/project.document.rst:59: WARNING: autodoc: failed to import module u'project.document'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.document
/home/plasma/prog/project/docs/project.mixins.rst:10: WARNING: autodoc: failed to import module u'project.mixins.comparebydict'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.mixins.comparebydict
/home/plasma/prog/project/docs/project.mixins.rst:18: WARNING: autodoc: failed to import module u'project.mixins.kwargstodict'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.mixins.kwargstodict
/home/plasma/prog/project/docs/project.mixins.rst:27: WARNING: autodoc: failed to import module u'project.mixins'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.mixins
/home/plasma/prog/project/docs/project.parser.rst:10: WARNING: autodoc: failed to import module u'project.parser.dependency'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.parser.dependency
/home/plasma/prog/project/docs/project.parser.rst:18: WARNING: autodoc: failed to import module u'project.parser.documentparser'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.parser.documentparser
/home/plasma/prog/project/docs/project.parser.rst:26: WARNING: autodoc: failed to import module u'project.parser.parseproducts'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.parser.parseproducts
/home/plasma/prog/project/docs/project.parser.rst:35: WARNING: autodoc: failed to import module u'project.parser'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.parser
/home/plasma/prog/project/docs/project.sequence.rst:10: WARNING: autodoc: failed to import module u'project.sequence.sequence'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.sequence.sequence
/home/plasma/prog/project/docs/project.sequence.rst:18: WARNING: autodoc: failed to import module u'project.sequence.sequenceprocessor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.sequence.sequenceprocessor
/home/plasma/prog/project/docs/project.sequence.rst:27: WARNING: autodoc: failed to import module u'project.sequence'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.sequence
/home/plasma/prog/project/docs/project.tests.rst:10: WARNING: autodoc: failed to import module u'project.tests.testcollectionprocessor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.tests.testcollectionprocessor
/home/plasma/prog/project/docs/project.tests.rst:18: WARNING: autodoc: failed to import module u'project.tests.testdocumentparser'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.tests.testdocumentparser
/home/plasma/prog/project/docs/project.tests.rst:26: WARNING: autodoc: failed to import module u'project.tests.testextractor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.tests.testextractor
/home/plasma/prog/project/docs/project.tests.rst:34: WARNING: autodoc: failed to import module u'project.tests.testlogger'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.tests.testlogger
/home/plasma/prog/project/docs/project.tests.rst:42: WARNING: autodoc: failed to import module u'project.tests.testsequenceprocessor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.tests.testsequenceprocessor
/home/plasma/prog/project/docs/project.tests.rst:50: WARNING: autodoc: failed to import module u'project.tests.teststringprocessor'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.tests.teststringprocessor
/home/plasma/prog/project/docs/project.tests.rst:59: WARNING: autodoc: failed to import module u'project.tests'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named project.tests
looking for now-outdated files... none found
pickling environment... done
checking consistency... /home/plasma/prog/project/docs/modules.rst:: WARNING: document isn't included in any toctree
done
preparing documents... done
writing output... [100%] project.tests                                                                                                              
writing additional files... (1 module code pages) _modules/index genindex search
copying static files... done
copying extra files... done
dumping search index... done
dumping object inventory... done
build succeeded, 36 warnings.
Was it helpful?

Solution

I ended up restructuring my project so that the docs directory is at the same level as my project directory that contains all the files. This works when I use sys.path.insert(0, os.path.abspath("../")), and it's probably a bit nicer to look at.

project
    | docs/
    | project/
        | project files, etc.
    | tests/

OTHER TIPS

Iam a bit late for the party here is my solution:

You have to go 2 directorys up:

sys.path.insert(0, os.path.abspath('../..'))

It won't work on python3.x afaik.

Sphinx is not very python3 compatible, running __import__(module_name) AND importlib.import_module(module_name) both work in my interpreter, but not in sphinx.

I tried checking out the master branch of sphinx, changed my interpreter to python3.4 and got errors on modules that were removed in the 3.x series. You can see my issue report here:

https://github.com/sphinx-doc/sphinx/issues/2046

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top