Sto riscontrando qualche problema nell'impostare il DJANGO_SETTINGS_MODULE per il mio progetto Django.Come posso impostare correttamente DJANGO_SETTINGS_MODULE per il mio progetto Django (sto usando virtualenv)?
Ho una directory ~/dev/django-project
. In questa directory ho un ambiente virtuale che ho impostato con virtualenv, e anche un progetto django chiamato "blossom" con un'app all'interno di esso chiamata "onora". Esecuzione tree -L 3
da ~/dev/django-project/
mi mostra il seguente:
.
├── 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
Sto cercando di scaricare i miei dati dal database con il comando
django-admin.py dumpdata
Il mio approccio è quello di eseguire cd ~/dev/django-project
e quindi eseguire source virtual_environment/bin/activate
e quindi eseguire django-admin.py dumpdata
Tuttavia, sto ottenendo il seguente errore:
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
ho fatto qualche googling e trovato questa pagina: https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings
che mi dicono che
When you use Django, you have to tell it which settings you're using. Do this by using an environment variable, DJANGO_SETTINGS_MODULE. The value of DJANGO_SETTINGS_MODULE should be in Python path syntax, e.g. mysite.settings. Note that the settings module should be on the Python import search path.
A seguito di un suggerimento a Setting DJANGO_SETTINGS_MODULE under virtualenv? ho aggiunti le linee
export DJANGO_SETTINGS_MODULE="blossom.settings"
echo $DJANGO_SETTINGS_MODULE
a virtual_environment/bin/attivare. Ora, quando si esegue il comando di attivazione per attivare l'ambiente virtuale, ottengo la lettura di uscita:
DJANGO_SETTINGS_MODULE set to blossom.settings
Questo sembra buono per me, ma ora il problema che ho è che in esecuzione
django-admin.py dumpdata
restituisce il seguente errore:
ImportError: Could not import settings 'blossom.settings' (Is it on sys.path?): No module named blossom.settings
Cosa sto facendo male? Come posso verificare lo sys.path
? Come dovrebbe funzionare?
Grazie.
Grazie - 'python blossom/manage.py dumpdata' ha funzionato come previsto. – Deonomo
Vero. Allora perché i documenti di django dicono "Usa esattamente uno dei due configure() o DJANGO_SETTINGS_MODULE. Non entrambi e ** non neanche **." ? https://docs.djangoproject.com/en/dev/topics/settings/ – lajarre
Pensiero corrente - come descritto nel sito ["DeployDjango"] (http://www.deploydjango.com/django_project_structure/index.html) e il recente * [Two Scoops of Django] (http://django.2scoops.org/) * book - è che 'django-admin.py' con impostazioni separate funziona perfettamente, ed è in realtà preferibile usare' manage. py'. – supervacuo