使用设置目录时,我应该在哪里导入它?

时间:2013-12-04 19:52:14

标签: python django django-settings

我最近开始使用 Django的两个Scoops 一书中描述的设置目录。它包含以下文件

  • local.py
  • staging.py
  • production.py
  • test.py
  • __init__.py

为了能够使用服务器上的不同设置文件,我已经调整了我的django.fcgi脚本来导入设置模块。它运作非常顺利。

但是,如何在我使用runserver的本地计算机上执行相同操作?我设置了DJANGO_SETTINGS_MODULE,我已将manage.py文件调整为

#!/usr/bin/env python
from django.core.management import execute_manager
import imp

import sys
sys.path.insert(0, '/home/user/don.joey/projects/a_project/a_project_site/settings')

import settings

try:
    imp.find_module('settings') # Assumed to be in the same directory.
except ImportError:
    import sys
    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
    sys.exit(1)

if __name__ == "__main__":
    execute_manager(settings)

工作正常。

如何让django-admin.py找到这些设置?我不想手动编辑django-admin.py,因为它是我的virtualenv的一部分,因此会定期更新

更新

我已设置以下内容:export DJANGO_SETTINGS_MODULE=settings.local

1 个答案:

答案 0 :(得分:2)

你需要设置两件事

  • DJANGO_SETTINGS_MODULE
  • PYTHONPATH以便找到设置模块

Django的两个Scoops 的方式建议设置一个名为blah的项目,你将拥有以下目录结构:

- blah_project/
    - blah/
        - manage.py
        - blah/
            - ...
            - settings/
                 - __init__.py
                 - local.py
                 - production.py
                 - ...

运行以下(假设bash环境):

export DJANGO_SETTINGS_MODULE=blah.settings.local
export PYTHONPATH=/full/path/to/blah_project/blah

只要django-admin.py在您的路径上(并且应该在django内安装并激活venv),您应该能够运行:

django-admin.py runserver
相关问题