【发布时间】:2010-12-11 00:00:08
【问题描述】:
我有几个站点,每个站点都有一个不同的设置文件——并且具有不同的名称。所有变体设置都有花卉主题。我们必须将网站分开。
C:\Proj-Carnation> echo %DJANGO_SETTINGS_MODULE%
path.to.settings_carnation_win32
我们有许多不使用内置django-admin.py test 命令的测试程序,因为它们是由 Django 前端启动的大型批处理作业,并使用 Django ORM。我们需要使用django.db.connection.creation.create_test_db()方法来创建一个新的测试数据库。
我们使用这个测试程序已经有一段时间了。目前,它已停止工作。我们对代码结构进行了大量更改,升级到 Django 1.1.1 和 Python 2.6。都是可能的罪魁祸首。
当我运行 Python 时,我看到了这一点。
C:\Proj-Carnation> python
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from django.conf import settings
>>> settings.DATABASE_ENGINE
INSDIE django.db.__init__, settings.DATABASE_ENGINE=''
'sqlite3'
>>> import django.db
>>> django.db.connection
<django.db.backends.dummy.base.DatabaseWrapper object at 0x00EE88B0>
在导入django.db 期间,某些设置显然没有设置。我在django.db 中添加了一个打印语句(“INSIDE”拼写错误)。设置未设置。
最终,settings.DATABASE_ENGINE 变为 'sqlite3'。进一步来说,这种“最终”行为是意料之中的:settings 模块使用惰性加载器技术。
问题在于:连接——由不完整的设置构建——是dummy 数据库后端。然而,最终设置显示引擎为'sqlite3'。
在另一个项目(“根”项目)中,没有问题。事情完美无缺。数据库设置创建正确的 sqlite3 后端实例。
那么,有什么不同呢?我难住了。环境设置或物理目录树是最重要的潜在问题。
在不工作的C:\Proj-Carnation中,PYTHONPATH是C:\Proj-Carnation;C:\Proj-Root;C:\This;C:\That。
在工作根项目C:\Proj-Carnation 中,PYTHONPATH 是C:\Proj-Root;C:\This;C:\That。
我是否在“康乃馨”项目中寻找隐藏了根项目中某些内容的内容?遗憾的是,Carnation 项目只有几个文件,并且它们位于一个包 (local) 中,这确保它们的名称与根项目不同。
在 1.1.1 版本中是否有一些不同的 Django 初始化?例如,django.conf 中是否存在与 Python 2.6 和 Django 1.1.1 不兼容的内容?
是否有一些我忽略的相对导入问题?
【问题讨论】:
-
也许我遗漏了一些东西,但与典型的 Django 项目相比,这一切似乎都非常复杂。您能否提供您的项目和应用程序的布局以及任何项目之间的关联描述?
-
@John Paulett:这是一个具有批处理后端作业的相关网站系列。所以比较复杂。
标签: python django configuration