Sphinx-build генерирует ошибку для файла python, сгенерированного SWIG, при импорте модуля python

Я пытаюсь создать документацию для некоторого модуля интерфейса Python, созданного SWIG на коде C. Я использую директиву %feature(docstring) в файлах интерфейса SWIG (* .i), как упоминалось в сообщении: Sphinx и документирование Python из готового API C ++

SWIG создает строки документации в сгенерированных модулях python, как задумано.

Но когда я пытаюсь создать документацию из модулей Python, сгенерированных SWIG, он выдает исключение:

/home/imitra/testdoc/doc/test_module.rst:4: WARNING: autodoc: failed to import module u'test_module'; the following exception was raised:
Traceback (most recent call last):
  File "/home/imitra/.local/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 658, in import_object
    __import__(self.modname)
  File "/home/imitra/testdoc/generated/test_module.py", line 3, in <module>
  _test_module = swig_import_helper()
  File "/home/imitra/testdoc/generated/test_module.py", line 25, in swig_import_helper
    return importlib.import_module('_test_module')
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named _tiger

Это происходит, когда Sphinx пытается импортировать test_module.py, и выполняется сгенерированный SWIG код.

Есть ли способ обойти эту проблему? Я новичок в SWIG и Sphinx. Пожалуйста, поделитесь своими мыслями.


person Indrajit Mitra    schedule 14.12.2017    source источник
comment
Похоже, _tiger не удалось найти и импортировать. Вы можете импортировать модуль? В противном случае просмотрите трассировку стека, чтобы увидеть, где он вызывается.   -  person Steve Piercy    schedule 14.12.2017
comment
РЕШЕНИЕ: Спасибо, Стив, я пропустил один файл * .so, который я обернул с помощью SWIG, чтобы поместить в sys.path. Sphinx не смог загрузить модуль.   -  person Indrajit Mitra    schedule 15.12.2017


Ответы (1)


Я получаю аналогичную ошибку (при создании Sphinx) на ReadTheDocs.io, как и вы, когда я забыл обновить свой файл requirements.txt. Тогда RTD не знает, как установить все зависимости.

Я мало что знаю о Sphinx в отношении C ++ или SWIG, а также о том, применимо ли это к вашей проблеме.

person Thomas Fauskanger    schedule 14.12.2017