移动到另一个目录后配置 Django 设置?

Mar*_*rty 1 python django django-settings

我的 Django 项目结构如下所示,

.
??? myapp
?   ??? apps
?   ?   ??? __init__.py
?   ??? __init__.py
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? manage.py
??? tests
    ??? test_config.py
Run Code Online (Sandbox Code Playgroud)

我从那里移动设置文件以形成以下结构。

.
??? myapp
?   ??? apps
?   ?   ??? __init__.py
?   ??? config
?   ?   ??? __init__.py
?   ?   ??? settings.py
?   ?   ??? urls.py
?   ?   ??? wsgi.py
?   ??? __init__.py
??? manage.py
??? tests
    ??? test_config.py
Run Code Online (Sandbox Code Playgroud)

所以我改变了我的 wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.config.settings")

application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)

和我的 manage.py

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.config.settings")

    print "settings!!"

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)
Run Code Online (Sandbox Code Playgroud)

现在,当我运行 django shell 时出现./manage.py shell此错误,回溯贴在下面。

Python 2.7.10 (default, Oct 14 2015, 16:09:02) 
[GCC 5.2.1 20151010] on linux2
Django 1.9.2
Traceback (most recent call last):
  File "<input>", line 5, in <module>
  File "/home/marty/.virtualenvs/seventeen/local/lib/python2.7/site-packages/django/__init__.py", line 17, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/home/marty/.virtualenvs/seventeen/local/lib/python2.7/site-packages/django/conf/__init__.py", line 55, in __getattr__
    self._setup(name)
  File "/home/marty/.virtualenvs/seventeen/local/lib/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?我该如何解决?

谢谢

Avi*_*aor 5

myapp 不在 PYTHONPATH 中,因此 myapp.config.settings 不是有效模块。

在 os.environ 之前,添加以下几行:

import sys
sys.path.append('path/to/dir/of/myapp')
Run Code Online (Sandbox Code Playgroud)