Спасибо @StevePiercy за то, что обратили мое внимание на важные строки в файле необработанного журнала:
WARNING: autodoc: failed to import module u'Text' from module u'Shady'; the module executes module level statement and it might call sys.exit().
WARNING: autodoc: failed to import module u'Video' from module u'Shady'; the module executes module level statement and it might call sys.exit().
(я искал в 9000-строчном файле журнала .Text
, потому что Text
создает слишком много обращений, но мне не пришло в голову искать его 'Text'
в кавычках).
Для меня это сообщение вводит в заблуждение: проблема не в том, что «модуль выполняет операторы уровня модуля», потому что per se разрешено. Я потратил некоторое время после того, как заметил, что некоторые операторы уровня модуля, по-видимому, разрешены в других подмодулях, и попытался связать нарушающие операторы уровня модуля в декоратор класса, думая, что, возможно, таинственный модуль-уровень Сфинкса - тогда детектор выписок пропустит их ...)
Нет, проблема в том, что не факт, что операторы уровня модуля существуют и может вызвать sys.exit()
, а тот факт, что они действительно косвенно вызвали sys.exit()
во время процедура компиляции сфинкса. Это был изворотливый способ обработки недостающих зависимостей, который, вероятно, следует переосмыслить, но я мог бы обойти это сейчас, избегая моего звонка sys.exit()
, когда os.environ.get('READTHEDOCS')
правдив.