1

当我最初创建我的 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.

我确定在某个地方我有设置设置的路径,但我找不到它。有任何想法吗?

4

2 回答 2

0

该错误是由于以下可能性:

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

  2. 没有项目根即project/添加到PYTHONPATH

  3. manage.py不在项目根目录,即 ie project/,而是在project/project.


可能的解决方案

  1. 将项目根 ie 添加project/PYTHONPATH- 因为manage.py试图做相当于 animport project.settings并且要发生它需要projectsys.path
  2. 如果您project/列出了PYTHONPATH项目manage.py根目录(.project.settingssettingsmanage.pyproject/project/project

  3. 设置DJANGO_SETTINGS_MODULEproject.settings.

project.settings表示设置模块比一个目录低manage.py- 在您的情况下,您同时拥有两者manage.py并且settings.py处于同一级别,即project/project/ 您没有使用默认的 django 项目结构。无论如何,您可以在运行“runserver”命令之前检查 /export 设置:(来自官方 Django 文档 -设置DJANGO_SETTINGS_MODULE

示例(Unix Bash shell)

export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver

示例(Windows 外壳):

set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver

建议:尽量遵守常规的项目结构(至少在你成为专家之前)。即保持manage.py一个目录级别高于其他项目文件.. settings.py, urls.py, 等

于 2013-01-07T12:47:55.797 回答
0

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

  • 您可能在 .bashrc / .bash_history / 其他一些 shell 启动文件中设置了 PYTHONPATH 环境变量
  • 您可能在$virtualenv/bin/activate脚本中的 virtualenv 中设置了所述变量
  • 您可能已从内部符号链接您的项目$virtualenv/lib/pythonx.y/site-packages
于 2013-01-07T12:35:26.823 回答