Использование файла настроек, отличного от settings.py в Django - PullRequest
14 голосов
/ 29 марта 2011

Я хочу использовать другой файл настроек в django - в частности settings_prod - но всякий раз, когда я пытаюсь сделать syncdb с --settings=settings_prod, он жалуется:

python2.6 manage.py syncdb  --settings=settings_prod
Error: Can't find the file 'settings.py' in the directory containing 'manage.py'. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)

Я также пытался установить переменную окружения DJANGO_SETTINGS_MODULE=settings_prod без конца.

Редактировать: я также установил переменную окружения в моем файле wsgi, также без конца:

import os
import sys

from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings_prod'
application = WSGIHandler()

Предложения

Ответы [ 4 ]

15 голосов
/ 10 августа 2011

Попробуйте создать модуль settings.

  1. Создайте папку settings в том же каталоге, что и manage.py.
  2. Поместите различные файлы настроек в эту папку (например, base.py и prod.py).
  3. Сделайте __init__.py и импортируйте любые настройки, которые вы хотите использовать в качестве настроек по умолчанию. Например, ваш файл __init__.py может выглядеть так:

    from base import *
    
  4. Запустите ваш проект и измените настройки:

    $ python2.6 manage.py syncdb --settings=settings.prod
    
10 голосов
/ 29 марта 2011

Я знаю, что независимо от того, что вы делаете с manage.py, вы получите эту ошибку, потому что manage.py делает относительный импорт settings:

try:
    import settings # Assumed to be in the same directory.

http://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-option---settings

Обратите внимание, что эта опция не нужна в manage.py, потому что он использует settings.py из текущего проекта по умолчанию.

Вы должны попробовать django-admin.py syncdb --settings=mysettings вместо

0 голосов
/ 04 сентября 2017

Мы можем использовать этот метод для установки другого файла настроек, например, я использую другой файл настроек для моего модульного теста (settings_unit_test.py).Также у меня есть другой файл настроек для другой среды инфраструктуры settings_dev.py, settings_test.py и settings_prod.py.

В среде Windows (то же самое можно сделать и в Linux)

set DJANGO_SETTINGS_MODULE=settings_unit_test
set PYTHONPATH=<path_of_your_directory_where_this_file_'settings_unit_test.py'_is_kept>
0 голосов
/ 12 ноября 2011

это поможет вам:

  • создать еще один файл "setting_prod.py" с вашим исходным файлом settings.py.

  • записьЗапустите настройки, которые вам нужно запустить, в файле setting_prod.py.

  • Затем импортируйте файл setting_prod.py в ваш файл settings.py.

напримерsettings.py:

VARIABLE = 1

import setting_prod

setting_prod.py

VARIABLE = 2

После импорта файла setting_prod.py в файл settings.py, VARIABLE установит новое значение в "2" из "1».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...