django从服务器导入本地设置

时间:2012-09-03 18:23:22

标签: python django

在我的主目录中,我有一个名为local的文件夹。其中包含名为__init__.pylocal_settings.py的文件。我的django应用程序位于一个完全不同的目录中。当应用程序在DEBUG模式下 NOT 运行时,我希望它加载local_settings.py文件。如何实现这一目标?我看了下面的内容:

Import a module from a relative path

Importing files from different folder in Python

http://docs.python.org/tutorial/modules.html

基本上,那些教程允许从另一个目录导入,但是一个完全不同的工作树呢?我不想继续......,..,..等等。有没有办法转到主目录?

我尝试了以下代码:

import os, sys
os.chdir(os.path.join(os.getenv("HOME"), 'local'))
from local_settings import *

但是我一直在看apache error.log中的错误......

2 个答案:

答案 0 :(得分:0)

os.chdir只影响当前的工作目录,它与Python从哪里导入模块没有任何关系。

您需要做的是将local目录添加到Pythonpath中。您可以通过修改PYTHONPATH从shell执行此操作,也可以通过修改sys.path从Python内部执行此操作:

import sys
sys.path.append(os.path.expanduser("~/local"))
import local_settings

答案 1 :(得分:0)

为了回应您对源代码管理的担忧,您可以将源代码控制设置为忽略该文件,和/或在部署脚本中安装符号链接以将操作系统上的文件链接到另一个文件。我做了两个,虽然不是在django。但这是一项微不足道的任务。

您的部署布局可能如下所示:

/current ( symlink to /releases/v3 )
/settings/local_settings.py
/releases/v1
/releases/v2
/releases/v3

并且任务作为部署的一部分运行:

cd /current 
ln -s /settings/local_settings.py local_settings.py

如果您使用fab或capistrano进行部署,则需要进行几行配置。我敢肯定你也可以通过木偶/厨师这样做。