Как правильно установить модуль настроек 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
подробнее Джанго документы
Я знаю, что есть много ответов, но этот работал для меня, просто для галочки.
- перейти к где все виртуальные среды.
- перейдите в папку среды, специфичную для вашего проекта
- добавить
export DJANGO_SETTINGS_MODULE=<django_project>.settings
илиexport DJANGO_SETTINGS_MODULE=<django_project>.settings.local
Если вы используете отдельный файл настроек, хранящийся в папке настроек.