【问题标题】:django-admin.py can't find custom settings filedjango-admin.py 找不到自定义设置文件
【发布时间】:2013-07-20 01:31:56
【问题描述】:

我有几个自定义的 django 设置,这基本上是我的项目结构:

MainProject/
  manage.py
  my_project/
    settings/
      base.py
      dev.py
      prod.py

我在目录中创建了__init__.py 文件,以将它们标识为包。
我已导出 DJANGO_SETTINGS_MODULE 以指向所选的设置文件。
manage.py 命令似乎处理得很好,我从来没有遇到过问题。

问题是,无论我做什么,django-admin.py 都是找不到任何设置文件。我已经尝试了几种可能的解决方案,但到目前为止似乎没有任何效果。

  1. 我用过--settings=my_project.settings.dev
  2. 我已经对manage.py 进行了编辑和硬编码,让它指向 dev.py 文件
  3. 我在MainProjectmy_project 目录中创建了一个settings 文件,用于导入dev 文件(进而导入base.py)。
  4. 我创建了一个settings 文件,让Django 知道它应该使用哪些文件作为settings

这是关于第4点的:

from django.core.management import setup_environ
try:
    import my_project.settings.dev as settings
except ImportError:
    import sys
    sys.stderr.write("Couldn't find the settings.py module.")
    sys.exit(1)
setup_environ(settings)

到目前为止似乎没有任何效果。

======================================

解决方案:
我没有找到确切的解决方案,但由于对所选答案的评论,我了解到您基本上可以使用manage.py 来完成您在django-admin.py 中可以做的所有事情,我不知道!因为使用manage.py 对我有用,所以我很好。

【问题讨论】:

    标签: django django-admin django-settings django-manage.py


    【解决方案1】:

    您是否尝试过从您的设置模块导入 __init__.py 中的开发设置?

    settings/_init_.py

    from .dev import *

    【讨论】:

      【解决方案2】:

      我建议做什么:

      创建一个普通的 settings.py 文件并在其中导入其他文件之一。这避免了三个场景之间共享的重复设置+这实际上是根据 DRY 原则推荐的方式。

      通常,您只需在特定设置文件中设置调试参数、数据库设置和私钥。所有其他设置都应在所有场景之间共享,以避免忘记更新一项并难以调试错误。

      【讨论】:

      • 做到了。它适用于 manage.py,不适用于 django-admin.py
      • 你不应该使用 django-admin.py,你应该使用 manage.py。它负责设置环境并可以执行 django-admin 可以执行的所有命令。 See the Django Doc
      • 不知道!它对我有用 manage.py 所以我解决了这个问题,谢谢!
      • 是的,$ python manage.py check --deploy --settings=my_project.settings.production 为我工作。
      猜你喜欢
      • 2011-08-05
      • 2019-07-29
      • 2011-02-10
      • 2012-01-05
      • 2012-08-01
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 2013-07-01
      相关资源
      最近更新 更多