Ошибки при попытке запустить Sphinx в каком-либо коде плагина GIMP Python

Я пытаюсь использовать Sphinx для документирования файла Python, который используется для реализации плагина GIMP. Проблема в том, что когда я бегу;

make html

Я получаю следующие сообщения, которые, как видно ниже, приводят к ошибке;

sphinx-build -b html -d _build/doctrees   . _build/html
Running Sphinx v2.2.0
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 0 source files that are out of date
updating environment: 0 added, 1 changed, 0 removed
reading sources... [100%] code                                                                                                                        
WARNING: autodoc: failed to import module 'Plugin_ImageOverlay'; the following exception was raised:
Traceback (most recent call last):
  File "/home/craig/.local/lib/python3.5/site-packages/sphinx/ext/autodoc/importer.py", line 32, in import_module
    return importlib.import_module(modname)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/craig/.gimp-2.8/plug-ins/ImageOverlay/Plugin_ImageOverlay.py", line 73, in 
  <module>
    from   gimpfu import register, main, pdb, gimp, PF_IMAGE, PF_DRAWABLE, PF_INT, 
    PF_STRING, PF_FILE, PF_BOOL, INTERPOLATION_NONE, INTERPOLATION_LINEAR, 
    INTERPOLATION_CUBIC, INTERPOLATION_LANCZOS, PF_RADIO
  File "/usr/lib/gimp/2.0/python/gimpfu.py", line 235
    raise error, "parameter name contains illegal characters"
               ^
SyntaxError: invalid syntax

looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index                                                                                                                        
generating indices...  genindexdone
writing additional pages...  search/home/craig/.local/lib/python3.5/site-
packages/sphinx_rtd_theme/search.html:20: RemovedInSphinx30Warning: To modify script_files 
in the theme is deprecated. Please insert a <script> tag directly in your theme instead.
{{ super() }}
done
copying static files... ... done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded, 1 warning.

The HTML pages are in _build/html.

Build finished. The HTML pages are in _build/html.

Если это не очевидно из приведенного выше вывода, сообщение об ошибке читается;

  File "/usr/lib/gimp/2.0/python/gimpfu.py", line 235
    raise error, "parameter name contains tllegal characters"
               ^
SyntaxError: invalid syntax

Я мало что знаю о Python или Sphinx, но связана ли эта ошибка с различиями в синтаксисе между версиями Python 2 и 3? Мой плагин может быть загружен и выполнен без проблем с помощью GIMP — так почему же Sphinx, кажется, задыхается от него?

Есть ли какое-то простое обходное решение, о котором я не знаю, например, пара ключ-значение, которую можно поместить в файл conf.py Sphinx?

Спасибо заранее за любую помощь.


person user1094648    schedule 24.09.2019    source источник
comment
Может сработать имитация gimpfu: sphinx -doc.org/en/master/usage/extensions/   -  person mzjn    schedule 25.09.2019


Ответы (1)


Вы используете версию 2.2.0 Sphinx, и Sphinx отключен поддержка Python 2 начиная с версии 2.0.x

Стиль raise error, e в gimpfu.py не поддерживается в Python 3.x. (вы должны использовать raise error(e))

Вы можете попробовать использовать более старую версию Sphinx, которая поддерживает Python 2, или взломать gimp, чтобы использовать синтаксис, совместимый с Python 3, или попросить людей из gimp исправить это...

person Rob Bricheno    schedule 24.09.2019
comment
Или, возможно, заставить Sphynx игнорировать / исключать материал Gimp. - person xenoid; 24.09.2019
comment
Я попытался скрыть модуль gimpfu от Sphinx, закомментировав соответствующий оператор Python from... import.... Все, что это сделало, это создало другие проблемы дальше по файлу исходного кода. Я начал редактировать файл gimpfu.py, когда подумал, что должен остановиться и сначала задать вопрос об этом здесь, в Stack Overflow. Я подумал, что, возможно, у Sphinx может быть такая настройка, как use_python_major_version = '2', которую я просто мог бы включить в файле conf.py проекта. Спасибо за все полезные отзывы. - person user1094648; 25.09.2019