Подтвердить что ты не робот

Является ли 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:
4b9b3361

Ответ 1

Вот что я думаю:

Когда Sphinx запускается, autodoc импортирует ваш модуль, а код верхнего уровня в модуле выполняется. Создается экземпляр OptionParser и обрабатывается аргументы командной строки и параметры, переданные в sphinx-build, один из которых -b. Ваш OptionParser не разрешает эту опцию.

Я бы поставил код OptionParser в функцию, чтобы он не выполнялся при импорте модуля.

Ответ 2

Это помогло, добавьте это внизу.

if __name__ == '__main__':

    parser = optparse.OptionParser()