2016-11-07 5 views
2

проблемы

При попытке произвести сфинкс документацию для повторного использования Django приложения, я ударил по следующей snafoo. Когда sphinx анализирует код model.py, это мешает его код, пытающийся получить доступ к настройкам проекта Django . Поскольку это автономное/многоразовое приложение , нет основного проекта , обеспечивающего эти параметры, т. Е. Нет файла ROOT/PROJECT/PROJECT/settings.py.Сфинкс и повторно использовать Django приложение

Настройка

В интересах ясности здесь является то, что я сделал. Траверс к тому, что будет обычный проект папку cd ROOT/PROJECT и создать приложениеdjango-admin startapp APPLICATION порождающий следующую структуру

/ROOT/ 
    /PROJECT/ 
    /APPLICATION/ 
     admin.py 
     apps.py 
     models.py 
     tests.py 
     views.py 

Примечание: Там нет /ROOT/PROJECT/PROJECT/*.py файлов, потому что я не перейти к корня папку cd root и создать проект используя django-admin createproject как обычно.

Следующая страница создает документацию по сфинксу spinx-quickstart docs, производящую следующую дополнительную структуру.

/ROOT/ 
    /PROJECT/ 
    /docs/ 
     /source/ 
     ... 
     conf.py 
     make.bat 

Это документы, построенные рядом с APPLICATION.

Вопрос

Что я помещаю в conf.py, чтобы правильно загрузить приложение без там быть settings.py файл?

Домашнее задание

В попытке решить эту проблему, я просмотрел ряд SO Вопросы, блоги и Джанго Документах и ​​не нашли лаконичное решение. Поскольку это было задано несколько раз до этого, я бы хотел мотивировать, что он не будет закрыт как дубликат, если ответ в предлагаемом дубликате использует один из этих фрагментов, поскольку это решение.

  • сбой с 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.

ответ

0

У меня была такая же проблема с Django 1.11 и Sphinx 1.5.5. Мне не удалось заставить его работать должным образом, и все решения, о которых вы говорили выше, тоже не работали. В конце концов я решил это, добавив это в свой Sphinx conf.py:

import sys, os 

project_path = os.path.abspath('.') 
# For Django to know where to find stuff. 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings") 
sys.path.append(project_path) 

# For settings.py to load. 
os.chdir(project_path) 

# For the models to load. 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
Смежные вопросы