Estaba probando el tutorial oficial de Django porque quiero aprenderlo. Ejecuto Archlinux 4.10.11-1 64 bits .
Primero, creé una carpeta llamada djangoapp donde configuré mi entorno virtual:
$ virtualenv djangoapp
Configuré mi directorio actual en esta carpeta y luego lo activé:
$ source bin/activate
E instalé Django después de:
$ pip install django
Siguiendo el tutorial, ejecuté:
$ django-admin startproject djangoapp
Y configuré mi directorio actual en djangoapp y ejecuté:
$ python manage.py runserver
Pero estoy recibiendo el siguiente error:
django.core.exceptions.ImproperlyConfigured: configuración solicitada DEBUG, pero las configuraciones no están configuradas. Debe definir la variable de entorno DJANGO_SETTINGS_MODULE o llamar a settings.configure() antes de acceder a la configuración.
De hecho, ejecutar env | grep DJANGO_SETTINGS_MODULE me da el siguiente resultado:
DJANGO_SETTINGS_MODULE=
Así que traté de configurarlo manualmente:
$ export DJANGO_SETTINGS_MODULE='djangoapp.settings'
Ejecutar $ python manage.py runserver ahora funciona, pero $ django-admin help ahora me arroja el siguiente error:
ModuleNotFoundError: ningún módulo llamado 'djangoapp'
¿Qué hice mal? ¡Gracias por tu ayuda!
PD: $ python --version me da Python 3.6.1 .
Creo que los documentos podrían ser un poco más claros al respecto, pero django-admin generalmente solo se usa para ejecutar django-admin startproject ./manage.py runserver manage.py se usa para el resto, ./manage.py migrate . .
Eliminar la variable de entorno DJANGO_SETTINGS_MODULE debería permitirle ejecutar los ./manage.py * y django-admin startproject cuando esté dentro de la carpeta djangoapp .
No estoy seguro de cómo hacer esto en Archlinux, pero algo como unset DJANGO_SETTINGS_MODULE o set -e DJANGO_SETTINGS_MODULE debería funcionar.
Más información: puede pensar en manage.py como un contenedor alrededor django-admin que establece automáticamente las variables de entorno PYTHONPATH y DJANGO_SETTINGS_MODULE . Por lo tanto, una vez dentro del proyecto, puede usar ./manage.py en lugar de django-admin para ejecutar los comandos de administración.