variable tutorial template examples content python django

python - tutorial - Django Shell No hay módulo llamado ajustes



django templates examples (10)

He desplegado Django a Apache a través de mod_wsgi . Django está funcionando bien cuando está alojado desde Apache. Sin embargo, estoy intentando hacer un mantenimiento a través de manage.py , pero cuando intento ejecutarlo, manage.py el error:

Error: No se pudieron importar las configuraciones ''myproject.settings'' (¿Está en sys.path?): No hay configuraciones con nombre de módulo

user@localhost:~$ cd /usr/local/myproject user@localhost:/usr/local/myproject$ ls drwxr-xr-x 2 apache apache 4096 2011-09-07 19:38 apache -rw-r--r-- 1 apache apache 0 2011-05-25 14:52 __init__.py -rw-r--r-- 1 apache apache 813 2011-09-09 16:56 manage.py drwxr-xr-x 6 apache apache 4096 2011-09-09 16:43 myapp -rw-r--r-- 1 apache apache 4992 2011-09-07 19:31 settings.py drwxr-xr-x 4 apache apache 4096 2011-09-08 20:32 templates -rw-r--r-- 1 apache apache 1210 2011-09-08 14:49 urls.py

Django parece estar ignorando la variable de entorno DJANGO_SETTINGS_MODULE.

user@localhost:~$ cd /usr/local/myproject user@localhost:/usr/local/myproject$ export DJANGO_SETTINGS_MODULE=settings user@localhost:/usr/local/myproject$ python manage.py shell Error: Could not import settings ''myproject.settings'' (Is it on sys.path?): No module named settings user@localhost:/usr/local/myproject$ python Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import settings >>>

Solo para confirmar que no me estaba volviendo loco, comenté todo dentro de manage.py, excepto la línea de import settings , y funcionó correctamente.

También he intentado configurar os.environ[''DJANGO_SETTINGS_MODULE''] = ''settings'' y sys.path.append(''/usr/local/myproject'') directamente en la parte superior de manage.py, sin ningún resultado.

¿Que está pasando aqui? ¿Por qué Django usa el nombre del módulo de configuración incorrecto? Esto me está volviendo loco.


Aunque la respuesta de Simon Whitaker (que un directorio con el mismo nombre confunde las cosas) es ciertamente acertada, en lugar de sugerirle que cambie toda su estructura de directorio existente, podría sugerir:

En lugar de utilizar el "mal funcionamiento" / ambiguo ...

import settings

... use el más específico ...

from django.conf import settings


De alguna manera, si su carpeta de proyecto tiene el mismo nombre que la aplicación que tiene el archivo de configuración, y si tiene __init__.py en la carpeta raíz del proyecto, esto generará errores en wsgi. Realmente no entiendo por qué, pero eliminar este archivo resolvió esto por mí.


En mi caso, el archivo wsgi.py funcionaba cuando el sistema se ejecutaba normalmente, pero obtenía ImportError cuando intentaba ejecutar un comando manual manage.py como migrate o collectstatic.

Revisé wsgi.py por la forma en que importa la configuración y noté que primero agrega la ruta de configuración a la sys.path de la siguiente manera:

import sys sys.path.append(''/opt/server/settings'')

Agregué eso a la parte superior de manage.py y funciona.


Esto puede suceder si el nombre de su directorio raíz es el mismo que el nombre de una de sus aplicaciones. Por ejemplo, aquí tengo un directorio llamado bar contiene un proyecto de Django con una aplicación también llamada bar :

Simons-MacBook-Pro ~/temp $ cd bar Simons-MacBook-Pro ~/temp/bar $ ./manage.py shell Error: Could not import settings ''bar.settings'' (Is it on sys.path?): No module named settings Simons-MacBook-Pro ~/temp/bar $ ls -l total 48 -rw-r--r-- 1 simon staff 0 25 Oct 10:46 __init__.py -rw-r--r-- 1 simon staff 130 25 Oct 10:46 __init__.pyc drwxr-xr-x 7 simon staff 238 25 Oct 10:46 bar -rwxr-xr-x 1 simon staff 503 25 Oct 10:46 manage.py -rw-r--r-- 1 simon staff 5025 25 Oct 10:46 settings.py -rw-r--r-- 1 simon staff 2658 25 Oct 10:46 settings.pyc -rw-r--r-- 1 simon staff 556 25 Oct 10:46 urls.py

Cambiar el nombre del directorio raíz a foo (o cualquier otra cosa que no sea bar ) resuelve el problema:

Simons-MacBook-Pro ~/temp/bar $ cd .. Simons-MacBook-Pro ~/temp $ mv bar foo Simons-MacBook-Pro ~/temp $ cd foo Simons-MacBook-Pro ~/temp/foo $ ./manage.py shell Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>>


Había cambiado accidentalmente mi variable DJANGO_SETTINGS_MODULE usando el comando echo DJANGO_SETTINGS_MODULE=mysite.settings : echo DJANGO_SETTINGS_MODULE=mysite.settings

Simplemente salí de virtualenv y lo activé de nuevo, lo que restauró mi configuración.


Parece que el camino a su proyecto no está siendo reconocido por wsgi. Esto me ha sucedido, y para resolverlo, agregué esto a la parte superior de mi archivo .wsgi:

import os import sys root_path = os.path.abspath(os.path.split(__file__)[0]) sys.path.insert(0, os.path.join(root_path, ''project_name'')) sys.path.insert(0, root_path)


Si está utilizando wsgi / uwsgi en producción ...

Estaba teniendo el mismo error:

Si cambió el nombre de la carpeta que creó django startproject que tiene archivos setting.py y wsgi.py, verifique en el archivo wsgi.py la línea: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<your_folder_name>.settings")

En mi caso tuve que cambiar el nombre también a <your_folder_name>.


Tuve un problema similar, donde se estaba devolviendo el mismo error cuando intenté ejecutar django-admin.py startproject myapp . Una respuesta anterior aquí me ayudó a resolverlo. El problema era que anteriormente había apuntado a DJANGO_SETTINGS_MODULE a un determinado archivo, que más tarde eliminé. Para solucionarlo, acabo de quitar el puntero con este comando:

export DJANGO_SETTINGS_MODULE=


Verifique la compatibilidad entre la versión virtualenv y la versión django. cuando coincide, funciona como una gema.


Ya que su aplicación web está funcionando, verifique que esté ejecutando manage.py con el mismo intérprete de Python que está definido en su archivo .wsgi (y si agrega otros directorios a sys.path en su archivo .wsgi, asegúrese de que estén en el pythonpath aquí también).

Si intenta importar algo en su archivo de configuración que lanza un error de importación, Django le dice que la configuración no se puede importar. Las versiones más recientes de django mencionarán (If the file settings.py does indeed exist, it''s causing an ImportError somehow.) y me he encontrado con esto unas cuantas veces.

Si no es eso, tal vez intente usar django-admin.py en su lugar, en caso de que algo haya fallado en su archivo manage.py. AFAIK no hay una buena razón para modificar manage.py directamente.