Boggy Boggy - 1 month ago 15
Python Question

Changing the sys.path for read the docs

I am documenting my pyramid project locally with sphinx. Locally

autodoc
works fine and the documentation looks the way I want it.

But if I am using read the docs I get the following error for each use of the autodoc feature:

/home/docs/checkouts/readthedocs.org/user_builds/buchungssystem/checkouts/latest/docs/source/02database/02models.rst:8: WARNING: autodoc: failed to import class u'Person' from module u'buchungssystem.models.person'; the following exception was raised:
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/buchungssystem/envs/latest/local/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 385, in import_object
__import__(self.modname)
ImportError: No module named buchungssystem.models.person


My project is structured like this:

project
->code
->models
->scripts
->...
->__init__.py
->...
->docs
->conf.py
->documentation
->setup.py


I think that my sys.path is not configured correctly. After trying out a lot I am back at
sys.path.insert(0, os.path.abspath('.'))

Answer

in your conf.py try this

sys.path.insert(0, os.path.join(os.path.dirname((os.path.abspath('.')), 'code', 'models')

because it requires path to the Person class and that class is one step up in your hierarchy and the you can pull the path of that class.