OptionParser находится в конфликте со сфинксом? - PullRequest
11 голосов
/ 02 августа 2011

Я пытаюсь написать документацию для своего проекта в 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 ]

17 голосов
/ 04 августа 2011

Вот что, я думаю, происходит:

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

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

5 голосов
/ 01 июля 2012

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

if __name__ == '__main__':

    parser = optparse.OptionParser()
...