Как правильно установить модуль настроек DJANGO для моего проекта Django (я использую virtualenv)?

у меня возникли проблемы с настройкой DJANGO_SETTINGS_MODULE для моего проекта Django.

у меня есть каталог на ~/dev/django-project. В этом каталоге у меня есть виртуальная среда, которую я настроил с virtualenv, а также проект django под названием "blossom" с приложением внутри него под названием "onora". Бег!--8--> С ~/dev/django-project/ показывает мне следующее:

.
├── Procfile
├── blossom
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── fixtures
│   │   └── initial_data_test.yaml
│   ├── manage.py
│   ├── onora
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── admin.py
│   │   ├── admin.pyc
│   │   ├── models.py
│   │   ├── models.pyc
│   │   ├── tests.py
│   │   └── views.py
│   ├── settings.py
│   ├── settings.pyc
│   ├── sqlite3-database
│   ├── urls.py
│   └── urls.pyc
├── blossom-sqlite3-db2
├── requirements.txt
└── virtual_environment
    ├── bin
    │   ├── activate
    │   ├── activate.csh
    │   ├── activate.fish
    │   ├── activate_this.py
    │   ├── django-admin.py
    │   ├── easy_install
    │   ├── easy_install-2.7
    │   ├── gunicorn
    │   ├── gunicorn_django
    │   ├── gunicorn_paster
    │   ├── pip
    │   ├── pip-2.7
    │   ├── python
    │   └── python2.7 -> python
    ├── include
    │   └── python2.7 -> /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
    └── lib
        └── python2.7

я пытаюсь свалить свои данные из базы данных с помощью команды

django-admin.py dumpdata

мой подход-бежать cd ~/dev/django-project а затем запустите source virtual_environment/bin/activate и затем запустить django-admin.py dumpdata

тем не менее, я получаю следующую ошибку:

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

я немного погуглил и нашел эту страницу: https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings

которые говорят мне, что

когда вы используете Django, вы должны сказать ему, какие настройки вы используете. Сделайте это с помощью переменной среды, DJANGO_SETTINGS_MODULE. Этот значение DJANGO_SETTINGS_MODULE должно быть в синтаксисе пути Python, например мистит.настройки. Обратите внимание, что модуль настроек должен быть на Python импорт пути поиска.

следуя предложению в настройка DJANGO_SETTINGS_MODULE под virtualenv? я добавил строки

export DJANGO_SETTINGS_MODULE="blossom.settings"
echo $DJANGO_SETTINGS_MODULE

в virtual_environment/bin/активировать. Теперь, когда я запускаю команду activate для активации виртуальной среды, я получаю чтение выхода:

DJANGO_SETTINGS_MODULE set to blossom.settings

это выглядит хорошо для меня, но теперь проблема у меня есть, что работает

django-admin.py dumpdata

возвращает следующую ошибку:

ImportError: Could not import settings 'blossom.settings' (Is it on sys.path?): No module named blossom.settings

что я делаю не так? Как я могу проверитьsys.path? Как это должно работать?

спасибо.

5 ответов


не работать django-admin.py для чего-либо, кроме начального создания проекта. Для всего после этого используйте manage.py, который заботится о поиске настроек.


Я просто столкнулся с той же ошибкой и в конце концов сумел понять, что происходит (большой ключ был (Is it on sys.path?) на ImportError).

вам нужно добавить каталог проекта в PYTHONPATH - вот что означает документация

обратите внимание, что модуль настроек должен находиться в пути поиска импорта Python.

С

$ export PYTHONPATH=$PYTHONPATH:$PWD

С


на unix-подобной машине вы можете просто псевдоним virtualenv, как это, и использовать псевдоним вместо ввода каждый раз:

.bashrc и

alias cool='source /path_to_ve/bin/activate; export DJANGO_SETTINGS_MODULE=django_settings_folder.settings; cd path_to_django_project; export PYTHONPATH=$PYTHONPATH:$PWD'


моей любимой альтернативой является передача файла настроек в качестве параметра времени выполнения в manage.py в синтаксисе пакета python, e.g:

python manage.py runserver --settings folder.filename

подробнее Джанго документы


Я знаю, что есть много ответов, но этот работал для меня, просто для галочки.

  1. перейти к где все виртуальные среды.
  2. перейдите в папку среды, специфичную для вашего проекта
  3. добавить export DJANGO_SETTINGS_MODULE=<django_project>.settings или export DJANGO_SETTINGS_MODULE=<django_project>.settings.local Если вы используете отдельный файл настроек, хранящийся в папке настроек.