Autodoc работает локально, но не в ReadTheDocs

Я задокументировал некоторые функции с помощью autodoc. Локально работает хорошо. Когда я делаю коммит на GitHub, документация построена на ReadTheDocs, но там нет функций, которые я задокументировал с помощью «automodule».

Я добавил в свой conf.py:

import mock

MOCK_MODULES = ['numpy', 'scipy']
for mod_name in MOCK_MODULES:
   sys.modules[mod_name] = mock.Mock() 

Но это не помогает.

Может ли это быть связано с тем, что я использую свою собственную библиотеку C? (У меня есть файл .c, который я компилирую для получения .so)


person natalia    schedule 17.07.2014    source источник
comment
Вы проверяли журнал? Если вы перейдете на вкладку Сборка своего проекта, вы увидите журналы того, что произошло. Например: readthedocs.org/builds/beaver/1529001. Проверьте это и напишите, что там написано.   -  person kirbyfan64sos    schedule 17.07.2014
comment
@kirbyfan64sos, у меня это на вкладке Build: readthedocs.org/builds/ icclim/1528989   -  person natalia    schedule 17.07.2014


Ответы (1)


Прочитав исходные файлы и файл журнала, я сделал две вещи:

  1. Почему вы закомментировали строку sys.path.insert(os.path.abspath('../..')) в conf.py? Если вы читаете журналы, RTD не может найти ваши модули. Эта строка укажет правильный путь.

  2. Вам также нужно поместить свою библиотеку C в качестве фиктивного модуля.

person kirbyfan64sos    schedule 17.07.2014
comment
Спасибо, @kirbyfan64sos! - person natalia; 18.07.2014
comment
Я раскомментировал строку с помощью abspath('../..'). Но как поместить мою библиотеку C в качестве фиктивного модуля? Я пробовал так: MOCK_MODULES = ['numpy', 'scipy', 'ctypes', 'numpy.ctypeslib', 'ctypes.cdll', 'libC', 'libC.c', 'libC.so']. Но все равно не работает... - person natalia; 18.07.2014
comment
Я также попытался вставить в свой conf.py перед строкой MOCK_MODULES следующее: Не работает... - person natalia; 18.07.2014
comment
Хорошо, теперь все в порядке! Работает отлично! (Проблема была в том, что я был невнимателен, я забыл добавить некоторые модули (такие как netCDF4 и netcdftime) в список MOCK_MODULES) Большое спасибо, @kirbyfan64sos! Кстати, чтобы загрузить мою библиотеку C, мне всегда нужно фиксировать мой файл .so? Потому что я обычно помещаю файлы .so в .gitignore. - person natalia; 18.07.2014
comment
@natalia: Что ты имеешь в виду? RTD не будет импортировать НИКАКИЕ библиотеки C, но если вы просто используете библиотеку через ctypes или тому подобное, все будет в порядке. Обычно не рекомендуется загружать бинарные файлы в Git. Итак... просто оставьте это в своем .gitignore. - person kirbyfan64sos; 18.07.2014
comment
Ага, хорошо! Я вижу сейчас. Спасибо, @kirbyfan64sos! - person natalia; 21.07.2014