OptionParser находится в конфликте со сфинксом?
Я пытаюсь написать документацию для моего проекта в sphinx и всякий раз, когда sphinx встречает OptionParser в моем модуле, он дает мне:
sphinx-build: error: no such option: -b
Я думал, что это невозможно, поэтому я написал простой модуль, чтобы проверить это:
from optparse import OptionParser
"""some comment here"""
parser = OptionParser(conflict_handler='resolve')
parser.add_option('', '--force', action='store_true', dest='force', default=False, help='gqdel will skip asking questions, and delete them all.');
parser.add_option('', '--verbose', action='store_true', dest='verbose', default=False, help='Report additional information from gqdel')
(options, args) = parser.parse_args()
"""and here"""
print "foo"
И это дает мне ту же ошибку. Мой первый выглядит так:
some title
==========
.. automodule:: test
:members:
2 ответа
Решение
Вот что я думаю происходит:
Когда Sphinx запускается, autodoc импортирует ваш модуль и выполняется код верхнего уровня в модуле. Создается экземпляр OptionParser, который обрабатывает аргументы командной строки и параметры, передаваемые в sphinx-build, одним из которых является -b. Ваш OptionParser не разрешает эту опцию.
Я бы поместил код OptionParser в функцию, чтобы он не выполнялся при импорте модуля.
Это помогло мне, добавьте это внизу.
if __name__ == '__main__':
parser = optparse.OptionParser()