проблема
При попытке создать документацию sphinx для повторно используемого приложения Django я ударил по следующему snafoo. Когда sphinx анализирует код model.py это мешает его код, пытающийся получить доступ к настройкам проекта Django. Поскольку это автономное/многоразовое приложение, нет основного проекта, обеспечивающего эти параметры, т. ROOT/PROJECT/PROJECT/settings.py Нет файла ROOT/PROJECT/PROJECT/settings.py.
Настроить
В интересах ясности вот что я сделал. Перейдите к тому, что будет обычной папкой проекта cd ROOT/PROJECT и создайте приложение django-admin startapp APPLICATION которое создает следующую структуру
/ROOT/
/PROJECT/
/APPLICATION/
admin.py
apps.py
models.py
tests.py
views.py
Примечание. Нет файлов /ROOT/PROJECT/PROJECT/*.py потому что я не /ROOT/PROJECT/PROJECT/*.py к корневому корневому каталогу cd root и не создавал проект с помощью django-admin createproject как обычно.
Затем создается документация sphinx, которая spinx-quickstart docs следующую дополнительную структуру.
/ROOT/
/PROJECT/
/docs/
/source/
...
conf.py
make.bat
То есть документы создаются рядом с APPLICATION.
Вопрос
Что я могу разместить в conf.py для правильной загрузки приложения без файла settings.py?
Домашнее задание
В попытке решить это я просмотрел ряд SO-вопросов, блогов и Django Docs и не нашел сжатого решения. Поскольку это было задано несколько раз до этого, я хотел бы мотивировать, что он не будет закрыт как дубликат, если ответ в предлагаемом дубликате использует один из этих фрагментов в качестве решения.
-
AppRegistryNotReadyсAppRegistryNotReadyfrom django.conf import settings settings.configure() -
Подобно первому методу отказа, т.е. испускает
AppRegistryNotReadyfrom django.conf import settings settings.configure() settings.INSTALLED_APPS += ['fintech'] -
Ошибка при
ImproperlyConfiguredimport django django.setup() -
Существует действительно старое решение, в котором упоминается устаревшая
setup_environfrom django.core.management import setup_environ from django.conf import settings settings.configure() setup_environ(settings) -
Это также любимый ответ, но он не работает, если нет файла
settings.py.import django os.environ['DJANGO_SETTINGS_MODULE'] = 'PROJECT.settings' django.setup()
Я также задал этот вопрос довольно подробный, поскольку связанные с ним вопросы относительно SO довольно кратки и не особенно полезны. Если это поможет, я использую Django 1.10.
Обновить
С тех пор я обнаружил, что если один из них импортирует свою функцию setup из setuptools сравнению с distutils.core то можно вызвать скрипт установки для компиляции своей документации, как в python setup.py build_sphinx -b BUILDER Вероятно, лучше повторить запрос при вызове setup.py над docs/conf.py через make.bat или MakeFile предоставленный Sphinx.
Я подозреваю, что результат будет схожим, а именно включать предоставленные ответы в docs/conf.py или, альтернативно, в setup.py, оба должны быть вызваны в рамках одного сеанса Python.