Является ли OptionParser конфликтом со сфинксом?
Я пытаюсь написать документацию для своего проекта в сфинксе и всякий раз, когда 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:
Ответы
Ответ 1
Вот что я думаю:
Когда Sphinx запускается, autodoc импортирует ваш модуль, а код верхнего уровня в модуле выполняется. Создается экземпляр OptionParser и обрабатывается аргументы командной строки и параметры, переданные в sphinx-build, один из которых -b. Ваш OptionParser не разрешает эту опцию.
Я бы поставил код OptionParser в функцию, чтобы он не выполнялся при импорте модуля.
Ответ 2
Это помогло, добавьте это внизу.
if __name__ == '__main__':
parser = optparse.OptionParser()