如何在Django中为多个项目正确设置环境设置?

时间:2014-04-04 17:59:33

标签: python django python-2.7 environment-variables settings

我有一个名为" myplanet"我的manage.py‍文件如下:

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

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

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

我知道我必须设置一个系统变量DJANGO_SETTINGS_MODULE:myplanet.settings,并将PYTHONPATH设置为我的settings.py文件。我想知道在另一个名为gMaps的项目中我该怎么办?我试图做同样的事情,但它并不简单。我的操作系统是Windows 7 x64

2 个答案:

答案 0 :(得分:3)

您可以为每个项目设置两个独立的虚拟环境。我认为这是最好的做法。在这种情况下,您甚至可以根据需要为每个项目安装不同版本的python包。

您可以在这里阅读有关使用virtualenv及其包装的信息: http://virtualenvwrapper.readthedocs.org/en/latest/index.html

答案 1 :(得分:1)

当您的PYTHONPATH位于包内或是可导入settings.py的模块时,您无需为您的django项目设置manage.py变量环境。

PYTHONPATH是Python搜索模块和文件的目录列表。

如果您需要将一个库的路径或项目的根路径添加到其中,则可以在代码中执行此操作。

例如在manage.py中:

import sys
sys.path.append("/home/my/project")

或者:

import os
BASE_PATH = os.path.abspath(os.path.dirname(__file__))
sys.path.append(BASE_PATH + '/src/folder/of/my/project/')

每个django项目都有自己的manage.py‍文件,设置DJANGO_SETTINGS_MODULE enivoronment本身,你不需要设置它。

我想如果你的manage.py有这一行:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myplanet.settings")

然后,你只需要为你的项目建立这个结构:

myplanet # It's a project folder
  myplanet # It's a package
    __init__.py
    settings.py
  manage.py

您可以使用python manage.py runserver运行项目而不设置PYTHONPATH环境变量。