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()
Другие вопросы по тегам