Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django忽略我的数据库引擎设置--有时_Python_Django_Configuration - Fatal编程技术网

Python Django忽略我的数据库引擎设置--有时

Python Django忽略我的数据库引擎设置--有时,python,django,configuration,Python,Django,Configuration,我有几个站点,每个站点都有一个不同的设置文件和不同的名称。所有不同的设置都有花卉主题。我们必须把这些地点分开 C:\Proj-Carnation> echo %DJANGO_SETTINGS_MODULE% path.to.settings_carnation_win32 我们有许多测试过程不使用内置的django-admin.py test命令,因为它们是由django前端启动的大批量作业,并且使用django ORM。我们需要使用django.db.connection.creati

我有几个站点,每个站点都有一个不同的设置文件和不同的名称。所有不同的设置都有花卉主题。我们必须把这些地点分开

C:\Proj-Carnation> echo %DJANGO_SETTINGS_MODULE%
path.to.settings_carnation_win32
我们有许多测试过程不使用内置的
django-admin.py test
命令,因为它们是由django前端启动的大批量作业,并且使用django ORM。我们需要使用
django.db.connection.creation.create\u test\u 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>
C:\Proj caronation>python
Python 2.6.2(r262:71605,2009年4月14日,22:40:02)[MSC v.1500 32位(英特尔)]上
win32
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从django.conf导入设置
>>>settings.DATABASE\u引擎
INSDIE django.db.\uuuuu init\uuuuuu,settings.DATABASE\u ENGINE=''
“sqlite3”
>>>导入django.db
>>>django.db.connection
在导入
django.db
的过程中,设置显然没有设置。我在
django.db
中添加了一个print语句(拼写错误的“INSIDE”)。未设置设置

最后,
settings.DATABASE\u ENGINE
变成了
'sqlite3'
。为了扩展这种“最终”行为,我们需要:
settings
模块使用延迟加载技术

问题是:这个连接(由不完整的设置构建)是
dummy
数据库后端。然而,最终设置显示引擎是
'sqlite3'

在另一个项目(“根”项目)中,没有问题。一切都很顺利。DB设置创建正确的sqlite3后端实例

那么,有什么不同呢?我被难住了。环境设置或物理目录树是首要的潜在问题

在非工作的
C:\Proj康乃馨
中,
PYTHONPATH
C:\Proj康乃馨;C:\Proj根;C:\这个;C:\That

在工作根项目
C:\Proj-caronation
中,
PYTHONPATH
C:\Proj-root;C:\这个;C:\That

我在“康乃馨”项目中寻找隐藏在根项目中的东西吗?遗憾的是,康乃馨项目只有几个文件,它们位于一个包(
local
)中,这确保它们的名称与根项目不同

版本1.1.1中是否存在一些不同的Django初始化?例如,
django.conf
中是否存在与Python2.6和django 1.1.1不一致的地方

是否有一些我忽略的相关导入问题?

找到了它

当设置模块位于软件包内时,该软件包的顶级
\uuuu init\uuuu.py
成员无法导入任何类型的Django材质

如果包含您的设置的顶级
\uuuuu init\uuuuu.py
具有Django导入,则该Django导入将(可能)在创建您的设置之前使用默认设置

由于Django中的某些东西(比如数据库连接)是单例的,所以在读取设置时创建的东西是唯一存在的


不要在包含设置模块的包中的
\uuuu init\uuuuuu.py
中放入任何内容。

也许我遗漏了一些东西,但与典型的Django项目相比,这一切似乎非常复杂。你能提供你的项目和应用程序的布局,以及任何项目的相关描述吗?@John Paulett:这是一系列相关的网站,具有批量后端作业。所以它相当复杂。