在settings.py中更改sys.path

时间:2014-01-28 01:46:20

标签: python django

在django测试项目settings.py中,我最近尝试将其放入:

try:
    import mymodule
except:
    import sys
    TESTPROJ_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
    PROJ_PARENT = os.path.abspath(os.path.join(TESTPROJ_ROOT, '..'))
    sys.path.append(PROJ_PARENT)

目的是在环境中未安装mymodule时添加本地项目路径。为了便于理解,目录结构如下:

base/mymodule
base/test_project/manage.py
base/test_project/test_project/settings.py

只要mymodule不在环境中,这就有效。一旦import mymodule被执行(settings.py中的任何地方),我就收到了错误:

django.core.exceptions.ImproperlyConfigured: ImportError django.contrib.admin: cannot import name signals

我有两个问题......

a)有没有办法阻止这种错误发生?

b)是否有另一种“智能”方式允许settings.py更改路径以允许模块在本地包含(如果它不在环境中)?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以在my-site.pth的一部分目录中创建文件sys.path,并在该文件中包含您要添加的目录的完整路径。

my-site.pth

base/mymodule

http://docs.python.org/2/library/site.html