проблема
При попытке создать документацию 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
сAppRegistryNotReady
from django.conf import settings settings.configure()
-
Подобно первому методу отказа, т.е. испускает
AppRegistryNotReady
from django.conf import settings settings.configure() settings.INSTALLED_APPS += ['fintech']
-
Ошибка при
ImproperlyConfigured
import django django.setup()
-
Существует действительно старое решение, в котором упоминается устаревшая
setup_environ
from 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.