折叠Django项目的最顶层文件夹后,找不到设置模块

时间:2013-01-07 08:22:15

标签: python django

当我最初创建我的Django项目时,我有这个文件夹结构:

project/
    project/
        manage.py
        settings.py
        ...

在最顶层的文件夹中,我初始化了我的git repo以及我的虚拟环境。

我想要折叠顶层文件夹级别(好像我已经运行了`django-admin.py startproject。':

project/
    manage.py
    settings.py

然而,当我尝试手动执行此操作时,它突然找不到设置模块。它仍然在project.settings.寻找它可能在哪里被硬编码?

当我运行python manage.py runserver时,我收到此错误:

ImportError: Could not import settings 'module.settings' (Is it on sys.path?): No module named settings

当我运行django-admin.py help <some subcommands>时,我收到此错误:

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

我确定某处我有设置设置的路径,但我找不到它。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

过去我曾经使用过这些地方:

  • 您可能在.bashrc / .bash_history /其他一些shell启动文件中设置了PYTHONPATH环境变量
  • 您可能已在$virtualenv/bin/activate脚本
  • 中的virtualenv中设置了所述变量
  • 您的migth已在$virtualenv/lib/pythonx.y/site-packages
  • 中对您的项目进行符号链接

答案 1 :(得分:0)

错误是由于以下可能性:

  1. 您没有从项目根目录运行命令,即project/,而不是project/project

  2. 项目根目录project/

  3. 尚未添加PYTHONPATH
  4. 您的manage.py不在项目根目录,即project/,而是在project/project


  5. 可能的解决方案

    1. 将项目根project/添加到PYTHONPATH - 因为manage.py尝试执行相当于import project.settings的操作,并且为了实现这一点,需要找到{{1}在project
    2. 如果您有sys.path中列出的项目根目录project/ - 问题必须PYTHONPATH导入manage.py格式的设置,您可以在在同一级别,即它必须只是project.settings - 所以将settings一级向上移动到项目根目录manage.py从当前project/

    3. project/project设为DJANGO_SETTINGS_MODULE

    4. project.settings表示设置模块是低于project.settings的一个目录 - 在您的情况下,您同时拥有manage.pymanage.py,即{ {1}} 那就是你没有使用默认的django项目结构。 无论如何,你可以在运行'runserver'命令之前检查/导出设置:(来自官方Django文档 - setting DJANGO_SETTINGS_MODULE

      示例(Unix Bash shell)

      settings.py

      示例(Windows shell):

      project/project/

      建议:尽量遵守传统的项目结构(至少在你成为专家之前)。即保持export DJANGO_SETTINGS_MODULE=mysite.settings django-admin.py runserver 其他项目文件的一个目录等级set DJANGO_SETTINGS_MODULE=mysite.settings django-admin.py runserver manage.py